最小的数最小的数最小的数
题目
希望学校的李老师给学生出了一道这样的算式,Sn=1+1/2+1/3+…+1/nSn= 1+1/2+1/3+…+1/nSn=1+1/2+1/3+…+1/n显然对于任意一个整数KKK,当nnn足够大的时候,SnSnSn大于KKK。现在李老师给出一个整数K(1<=k<=15)K(1<=k<=15)K(1<=k<=15),要求同学们编程求出一个最小的nnn;使得Sn>KSn>KSn>K。现在请你编程序来解决这个问题
输入
从文件minnum.inminnum.inminnum.in中读入数据,只有一个数表示K的值。
输出
结果输出到文件minnum.outminnum.outminnum.out中,只有一个数,就是 n的值。
输入样例
Minnum.in
1
输出样例
Minnum.out
2
解题思路
这题我们就直接枚举到k所到最大的分数再判断即可.
程序如下
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int k;
double ans;
int main()
{
freopen("minnum.in","r",stdin);
freopen("minnum.out","w",stdout);
scanf("%d",&k);
for(int i = 1; i <= 3000000; ++i)
{
if(ans > k)
{
printf("%d",i - 1);
break;
}
ans += 1 / (double)i;
}
return 0;
}