Cure(1+12+1419+116+....+1n*n)

    科技2026-06-20  10

    Cure

    Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 8 Accepted Submission(s) : 2 Font: Times New Roman | Verdana | Georgia Font Size: ← → 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

    1 2 4 8 15

    Sample Output

    1.00000 1.25000 1.42361 1.52742 1.58044

    笔记:错了好几次,坑点1:输入一定要用字符串; 坑点2:将每个答案先存储起来; 坑点3:大概当n=150000时,后面的数约等于0。

    正确代码:

    #include<iostream> #include<stdio.h> #include<cmath> using namespace std; long long maxn=1500008; double num[1500208]; void init(){ num[1]=1; for(long long i=2;i<=maxn;i++){ num[i]=num[i-1]+((1.0/i)*(1.0/i)); } } int main(){ init(); string s; while(cin>>s){ int len=s.length(); int f=0; long long n=0; for(int i=0;i<len;i++){ n=n*10+(s[i]-'0'); if(n>150000){ f=1; break; } } if(f){ printf("%.5f\n",num[150000]); } else{ printf("%.5f\n",num[n]); } } return 0; }
    Processed: 0.011, SQL: 9