Cure

来源:互联网 发布:mac修容粉香港价格 编辑:程序博客网 时间:2024/05/16 08:52
Problem Description
Given an integer n, we only want to know the sum of 1/k2 where k from 1 to n.
 

Input
There are multiple cases.
For each test case, there is a single line, containing a single positive integer n
The input file is at most 1M.
 

Output
The required sum, rounded to the fifth digits after the decimal point.
 

Sample Input
124815
 

Sample Output
1.000001.250001.423611.527421.58044

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const double eps=1e-7;long long gcd(long long x,long long y){    if(x<y) swap(x,y);    while(y)    {        int t=y;        y=x%y;        x=t;    }    return x;}double ans[1000005];char n[10000000];int main(){    long long i;    long long fang;    for (i=1;i<=1000000;i++)//存储所有的数字;    {        fang=i*i;        ans[i]=ans[i-1]+1.0/fang;    }    while(~scanf("%s",n))    {        int l=strlen(n);        if(l>6)//            printf("%.5lf\n",ans[1000000]);        else        {            int n1=0;            for(i=0;i<l;i++)//字符转换为数字;                n1=n1*10+n[i]-'0';            if(n1>1000000)                printf("%.5lf",ans[1000000]);            else                printf("%.5lf\n",ans[n1]);        }    } return 0;}

/*#include <cstdio>#include <cstring>using namespace std;double ans[115555];char a[115555];int main(){    int i,l,n,flag;    for (i=1; i<=115000; i++)        ans[i]=ans[i-1]+1.0/i/i;    while(~scanf("%s",a))    {        n=flag=0;        l=(int)strlen(a);        for (i=0; i<l; i++)            if (a[i]!='0')            {                if (l-i>6)                    flag=1;                else                {                    for (; i<l; i++)                        n=n*10+(a[i]-'0');                    if (n>115000)                        flag=1;                }                break;            }        if (flag)            printf("1.64493\n");        else            printf("%.5f\n",ans[n]);    }    return 0;}#include <iostream>#include <cmath>#include <vector>#include <cstdlib>#include <cstdio>#include <climits>#include <ctime>#include <cstring>#include <queue>#include <stack>#include <list>#include <algorithm>#include <map>#include <set>#define LL long long#define Pr pair<int,int>#define fread(ch) freopen(ch,"r",stdin)#define fwrite(ch) freopen(ch,"w",stdout)using namespace std;const int INF = 0x3f3f3f3f;const int mod = 1e9+7;const double eps = 1e-8;const int maxn = 11234567;char arr[maxn];int main(){    //fread();    //fwrite();    while(~scanf("%s",arr)){        int len = strlen(arr);        if(len > 6)            puts("1.64493");        else{            int v;            sscanf(arr,"%d",&v);            if(v >= 110292) puts("1.64493");            else if(v >= 52447) puts("1.64492");            else            {                double ans = 0;                for(int i=1;i<=v;i++){                    ans += 1.0 / (1.0 * i * i);                }                printf("%.5f\n",ans);            }        }    }    return 0;}#include <iostream>#include <algorithm>#include <string.h>#include <stdio.h>#include <queue>#include <set>#include <map>#include <stack>#include <math.h>#define LL long long#define inf 0x3f3f3f3fusing namespace std;char str[1000000];int in(LL &n){    char c;    if(c=getchar(),c==EOF) return 0;    while((c<='0'||c>'9')) c=getchar();    int len = 0;    str[len++] = c;    while(c=getchar(),c>='0'&&c<='9')        str[len++] = c;    str[len] = 0;    if(len > 6)        return 2;    n = 0;    for(int i = 0; i < len; ++i)        n=n*10+(str[i]-'0');    return 1;}int main(){    LL n;    int m;    char ch;    while((m=in(n)),m){        if(m == 2){            printf("1.64493\n");            continue;        }        if(n > 150000){            printf("1.64493\n");            continue;        }        double ans = 0.0;        for(LL i = 1; i <= n; ++i){            ans += 1.0/((double)i*(double)i);        }        printf("%.5f\n",ans);    }    return 0;}#include <algorithm>#include <iostream>#include <cstring>#include <cstdio>using namespace std;double ans[1000010] = {0};char str[1000010];int main(){    for(long long i = 1 ; i <= 1000000 ; i++ ) {        ans[i] = 1.0 / (i * i);    }    for(int i = 1 ; i <= 1000000 ; i++) {        ans[i] = ans[i] + ans[i - 1];    }    while(~scanf("%s",str)){        char *p = str;        while((*p) == '0')            p++;        int n;        if(strlen(p) > 7)            n = 1000000;        else            sscanf(p,"%d",&n);        if(n <= 1000000) {            printf("%.5f\n",ans[n]);        } else {            printf("%.5f\n",ans[1000000]);        }    }    return 0;}*/

0 0
原创粉丝点击