一、问题重述:
已知:Sn=1+1/2+1/3+…+1/n。显然对于任意一个整数 k,当 n 足够大的时候,Sn>k。
现给出一个整数 k,要求计算出一个最小的 n,使得 Sn>k。
1.1、输入格式
一个正整数 k。
1.2、输出格式
一个正整数 n。
输入输出样例
输入
1
输出
2
说明/提示
【数据范围】
对于 100% 的数据,1≤k≤15。
二、题解
2.1、做题思路
首先根据题意可以得知需要计算出一个满足不等式的最小的n,而且通过观察可以看出不等式中左边所有的分母是由1-n,而所有的分子全是1,因此,我们可以通过一个while循环进行累加处理,循环结束条件就是不等式成立的条件,然后输出即可。
2.2、常见错误
由于不等式中含有分数,所以我们在定义变量的时候需要定义成double,而在进行输出的时候需要强制转换,将double类型转换为int类型进行输出。
三、完整代码
#include <stdio.h>
int main() {
int k;
double n = 1, s = 1;
scanf("%d", &k);
while (s <= k) {
n = n + 1;
s = s + 1 / n;
}
int a = (int)n;
printf("%d", a);
}
标签:输出,入门,不等式,级数,int,double,while,Sn,1035
From: https://blog.csdn.net/2301_81195930/article/details/143332992