说明
已知:Sn= 1+1/2+1/3+...+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n,使得Sn>K。
输入格式
每个测试文件只包含一组测试数据,每组一个整数k(1<=k<=15)。
输出格式
对于每组输入数据,输出要求计算出的最小的n,使得Sn>K。
样例
输入数据 1
1
Copy
输出数据 1
2
解题思路:
对于这个题,设一个sn=0,用以存放级数的和,再设一个从i=2开始的循环,令sn等于sn+(1.0/i-1),每次判断sn是否大于k,若大于,n=i-1,输出n.需要特别注意,sn应定义为double型,
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int k, n;
double sn = 0;
cin >> k;
for (int i = 2;; i++) {
sn = sn + 1.0 / (i - 1);
if (sn > k) {
n = i - 1;
break;
}
}
cout << n;
return 0;
}