本文共 1133 字,大约阅读时间需要 3 分钟。
输入一个数x(x <= 10000),求数n使的S= 1+1/2+1/3+…+1/n>=x的最小n值。但如果在n > 5000000时都无法满足,则输出“Error!”(没有引号)
只有一个数x
如果数n使的S= 1+1/2+1/3+…+1/n>=x的最小n值小于5000000,则输出一个数n
否则输出“Error!”(没有引号)
输入样例1
10
输入样例2
1000
输出样例1
12367
输出样例2
Error!
刷个水体,活跃一下身心。。。
代码;
#include #include #include #include #include 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