题目描述
已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
输入
键盘输入 k
输出
屏幕输出 n
样例输入
1
样例输出
2
思路:
这个题比较简单,可以有很多思路,我就用了最容易想的那种。唯一需要注意的是像1/3
不是int型,要思考怎么处理数据不会丢失。下面直接看代码吧。
代码:
#include<stdio.h>
int main()
{
double Sn = 0;//双精度浮点型
int a = 1;//表示数列中的分母
int k;
int n = 0;//表示次数
scanf("%d", &k);
for (int i = 1; Sn <= (double)k; i++)//(double)强制转化为浮点型
{
Sn += 1.0 / a;//数列累加求和
a++;//分母每次+1
n = i;//判断进行了多少次
}
printf("%d", n);//输出次数
return 0;
}