首页 > 代码库 > codevs——3064 求和

codevs——3064 求和

3064 求和

 

 时间限制: 1 s
 空间限制: 32000 KB
 题目等级 : 青铜 Bronze
 
 
题目描述 Description

输入一个数xx <= 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;}

 

codevs——3064 求和