题目描述
已知:S_n= 1+\frac{1}{2}+\frac{1}{3}+…+\frac{1}{n}Sn=1+21+31+…+n1。显然对于任意一个整数 kk,当 nn 足够大的时候,S_n>kSn>k。
现给出一个整数 kk,要求计算出一个最小的 nn,使得 S_n>kSn>k。
输入格式
一个正整数 k。
输出格式
一个正整数 n。
输入输出样例
输入 #1复制
1
输出 #1复制
2
说明/提示
【数据范围】
对于 100%的数据,1 <= k <= 15。
【题目来源】
NOIP 2002 普及组第一题
重点:注意带小数点的计算,要乘1.0,设置Sn变量要选double
代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int k = 0;int i = 0;
double Sn = 0;
cin >> k;
while(Sn <= k){
i++;
Sn = Sn + 1*1.0/i;
}
cout << i << endl;
return 0;
}