1008: 级数求和

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的大小,是否减一


猜你喜欢

转载自blog.csdn.net/m0_61409069/article/details/126193216