P1035级数求和

· · 个人记录

[NOIP2002 普及组] 级数求和

题目描述

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

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

输入格式

一个正整数 k

输出格式

一个正整数 n

样例 #1

样例输入 #1

1

样例输出 #1

2

提示

【数据范围】

对于 100\% 的数据,1\le k \le 15

【题目来源】

NOIP 2002 普及组第一题

代码展示

#include<cstdio>
#include<iostream>
using namespace std;
int main() {
    int k,i;
    double s=0;//初始化累加器=0
    cin>>k;
    for(i=1; i<10000000; i++) {
        s+=1/(double)i;//累加
        if(s>(double)k) { //如果满足条件
            cout<<i;//输出i的值
            break;//跳出循环
        }
    }
    return 0;
}