1008: 级数求和
问题描述:已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
输入:键盘输入 k
输出:屏幕输出 n
样例输入:1
样例输出:2
提示:注意精度问题,应使用double
代码:
方法一:for循环,break跳出
#include<stdio.h>
int main()
{
double Sn=0,i;
int k,n;
scanf("%d",&k);
for(i=1;;i++)
{
Sn+=1/i;
if(Sn>k)
{
n=i;
break;
}
}
printf("%d",n);
}
方法二:while循环,条件跳出
#include <stdio.h>
int main()
{
int k, n = 1;
double Sn = 0;
scanf("%d", &k);
while(Sn <= k)
{
Sn = Sn + 1.0/n;
n++;
}
printf("%d\n", n-1);
return 0;
}
解析:注意输出n的大小,是否减一