题目描述
Description
输入一个数x(x <= 10000),求数n使的S= 1+1/2+1/3+…+1/n>=x的最小n值。但如果在n > 5000000时都无法满足,则输出“Error!”(没有引号)
输出描述
Output Description
如果数n使的S= 1+1/2+1/3+…+1/n>=x的最小n值小于5000000,则输出一个数n
否则输出“Error!”(没有引号)
样例输出
Sample Output
输出样例1
12367
输出样例2
Error!
刷个水体,活跃一下身心。。。
代码;
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
double x;
double ans;
int read()
{
int x=0,f=1; char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-') f=-1; ch=getchar(); }
while(ch<='9'&&ch>='0'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int main()
{
x=read();
long long n=1;
while(n<=5000000)
{
ans+=1.0/n;
if(ans>x)
{
printf("%d",n);
return 0;
}
n++;
}
printf("Error!\n");
return 0;
}
转载于:https://www.cnblogs.com/z360/p/7077163.html