说明
已知: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
输出数据 1
2
解题思路
级数求和,易知 Sn 是发散的,所以给定一个值k,必定存在一个n,使得Sn>k,这题的数据范围较小,我们可以直接用暴力枚举的方法求得,完整代码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int k;
cin >> k;
int n=1;
double ans=0;
while(1)
{
ans+=1.0/n;//切记浮点数在做除法时要加上*1.0
if(ans>k)
break;
n++;
}
cout << n;
return 0;
}
注:如有错请指出(谢谢*0*)