3064 求和
时间限制: 1 s
空间限制: 32000 KB
题目等级 : 青铜 Bronze
查看运行结果
题目描述 Description
输入一个数x(x <= 10000),求数n使的S= 1+1/2+1/3+…+1/n>=x的最小n值。但如果在n > 5000000时都无法满足,则输出“Error!”(没有引号)
输入描述 Input Description
只有一个数x
输出描述 Output Description
如果数n使的S= 1+1/2+1/3+…+1/n>=x的最小n值小于5000000,则输出一个数n
否则输出“Error!”(没有引号)
样例输入 Sample Input
输入样例1
10
输入样例2
1000
样例输出 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; }
时间: 2024-12-21 02:26:40