Live2d Test Env

ZOJ2345Gold Coins

昨天做过一样的题:

平方和公式:n*(n+1)*(2n+1)/6

 


#include<cstdio>
#include<cstdlib>
#include<iostream>
using namespace std;
int a[150],num;
int b[150];
int _S()
{
    char c=getchar();int s=0;
    while(c<'0'||c>'9') c=getchar();
    while(c>='0'&&c<='9'){s=s*10+c-'0';c=getchar();}
    return s;
}
void _db()
{
    for(int i=1;i<=141;i++)
        a[i]=(i+1)*i/2;
    for(int i=1;i<=141;i++)
        b[i]=i*(i+1)*(2*i+1)/6;
    return ;
}
void _get(int v)
{
    int tmp,ans;
    for(int i=1;i<=141;i++)
     if(a[i]<=v) tmp=i;//当然也可以用二分查找或者lower_bound
    ans=b[tmp];
     ans+=(v-a[tmp])*(tmp+1);
     printf("%d %d\n",v,ans);
     return ;
}
int main()
{
    _db();
    int T,n,x;
    T=_S();
    while(T--){
        while(true){
            x=_S();
            if(x==0) break;
            _get(x);
        }
        if(T) printf("\n");
    }
    return 0;
}
 

 

 
posted @ 2017-09-27 21:06  nimphy  阅读(209)  评论(0编辑  收藏  举报