P1035 [NOIP 2002 普及组] 级数求和(洛谷题面

题目

题目描述:

已知:Sn=1+12+13++1nS_n= 1+\dfrac{1}{2}+\dfrac{1}{3}+…+\dfrac{1}{n}。显然对于任意一个整数 kk,当 nn 足够大的时候,Sn>kS_n>k

现给出一个整数 kk,要求计算出一个最小的 nn,使得 Sn>kS_n>k

输入格式:

一个正整数 kk

输出格式:

一个正整数 nn

数据范围与说明:

【数据范围】

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

【题目来源】

NOIP 2002 普及组第一题

输入输出样例 #1

输入:

1
1

输出:

1
2

题意

简述:

已知:Sn=1+12+13++1nS_n= 1+\dfrac{1}{2}+\dfrac{1}{3}+…+\dfrac{1}{n}。显然对于任意一个整数 kk,当 nn 足够大的时候,Sn>kS_n>k

现给出一个整数 kk,要求计算出一个最小的 nn,使得 Sn>kS_n>k

代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<bits/stdc++.h>
using namespace std;
int main(){
int k;
double sum=0;
cin>>k;
int n=1;
while(true){
sum+=(double)1/n;
if(sum>k){
break;
}
n++;
}
cout<<n;
return 0;
}