题目描述:
已知Sn=1/1+1/2+1/3+······+1/n。
显然对于任意一个整数 k,当 n 足够大的时候,Sn>k。
求最小的满足条件的n,使得Sn>k。
输入格式:
一个正整数 k。
输出格式:
一个正整数 n。
输入输出样例:
输入
1
输出
2
分析:
定义
此题需要求出满足条件的最小整数n,使Sn>k。我们枚举即可,定义两个整数 n,k ;由于Sn不一定为正数,所以定义成浮点数类型。
过程
我们可以使用一个 while 循环,循环条件即:当Sn<=k时执行循环内容 。
每次将n++,而Sn则+=1.0/n。
最后在循环外面输出 n。
代码:
#include<bits/stdc++.h>
using namespace std;
int k,n;
double sn;// 问题中的Sn
int main()
{
cin>>k;
while(sn<=k)
{
n++;
sn+=1.0/n;
}
cout<<n;
return 0;
}