P1035 [NOIP2002 普及组] 级数求和

题目描述

已知:S= 1+1/2+1/3+…+1/n。显然对于任意一个整数 k,当 n 足够大的时候,S>k

现给出一个整数 k,要求计算出一个最小的 n,使得 S>k。

输入格式

一个正整数 k。

输出格式

一个正整数 n。

输入输出样例

输入 输出
1 2

建模分析:

很显然需要用到一个不确定多少次的循环,用while最合适了。

解答

#include<iostream>
using namespace std;

int k,c=1;
double s=0;
int main()
{
    cin>>k;
    while(true)
    {
        s+=1.0/c;
        if(s>k)
            break;
        c++;
    }
    cout<<c<<endl;
    return 0;
}
posted @ 2021-04-20 15:46  CodeSpark  阅读(756)  评论(0)    收藏  举报