题目来源https://www.luogu.com.cn/problem/P1035
题目描述:
题目描述已知:Sn=1+1/2+1/3+……+1/n。显然对于任意一个整数 k,当 n 足够大的时候,Sn>k。
现给出一个整数 k,要求计算出一个最小的 n,使得Sn>k 。
输入格式一个正整数 k。
输出格式一个正整数 n。
题目分析:
1.需要一个变量储存整数k
2.需要一个变量储存累加的和也就是Sn
3.用循环的方式作累加
4.循环结束的条件是累加值小于k
代码如下:
#include
int main()
{
int n=0,k=0;
double sum=0.0;
scanf("%d",&k);
for(n=1;sum<=k;n++)
{
sum+=1.0/n;
}
printf("%d",n);
return 0;
}
输出结果
反思与注意:
1.for循环中累加式注意1/整数n一定为0(除非n为1),哪怕将sum定义为浮点型,因为1/n先做,所以并不会得到浮点型结果(即如果已知结果肯定为符点型,与变量运算的数字常量也要带上小数点)



