HDU 5879 Cure -2016 ICPC 青岛赛区网络赛

Posted Ritchie丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 5879 Cure -2016 ICPC 青岛赛区网络赛相关的知识,希望对你有一定的参考价值。

题目链接

题意:给定一个数n,求1到n中的每一项的平方分之一的累加和。

题解:题目没有给数据范围,而实际上n很大很大超过long long。因为题目只要求输出五位小数,我们发现当数大到一定程度时值是固定的 pi*pi/6。小的打表就行了,这里打表为了防止爆内存我用了优化的方法,类似于我之前写的 light oj 1234

 

#include <iostream>
#include <math.h>
#include <stdio.h>
#include <cstring>
const int N=1e7+10;
using namespace std;
const double pi=acos(-1);
double a[N/50+10];
char c[1000005];
int main()
{
    int i,t,k=1;
    long long n;
    double cnt=pi*pi/6.0;
    double sum=1.0;
    a[0]=0.0;
    a[1]=1.0;
    for(i=2;i<=N;i++)
    {
        sum+=1.0/(double(i)*double(i));
        if(i%50==0)
        a[i/50]=sum;
    }
    while(scanf("%s",c)!=EOF)
    {
        int len=strlen(c);
        if(len>=7) printf("%.5f\\n",cnt);
        else
        {
            n=0;
            for(int i=0;i<len;i++)
            n=n*10+(c[i]-\'0\');
            //cout<<n<<"****"<<endl;
            long long b=n/50;
            double ans=a[b];
            for(i=b*50+1;i<=n;i++)
            ans+=1.0/(double(i)*double(i));
            printf("%.5f\\n",ans);
        }
    }
    return 0;
}

 

以上是关于HDU 5879 Cure -2016 ICPC 青岛赛区网络赛的主要内容,如果未能解决你的问题,请参考以下文章

HDU 5879 Cure

HDU 5879---cure

HDU 5879 Cure

[HDOJ5879]Cure(求极限,打表)

HDU5879(打表)

2017 ICPC/ACM 沈阳区域赛HDU6228