Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
这题太坏了,wa无数次,发现这题加一组数据可以rejudge无数程序用I64d 0 0 0 0 0 10000000000 不用I64d 0 0 0 0 0 1410065408 (越界的程序也能AC~~~)... 偶的程序wa无数次,高手指点一下。(hash...) #include<stdio.h> #include<string.h> const __int64 M=55457; //prim struct record { __int64 value; __int64 cnt; }hash[M]; __int64 mypow[101]; int main() { __int64 a1,a2,a3,a4,a5,i,j,k,ans,sum,value; unsigned __int64 p; for(i=-50;i<=50;i++) { mypow[i+50]=i*i*i; } while(scanf("%I64d%I64d%I64d%I64d%I64d",&a1,&a2,&a3,&a4,&a5)!=EOF) { memset(hash,0,sizeof(hash)); for(i=-50;i<=50;i++) { if (!i) continue; for(j=-50;j<=50;j++) { if (!j) continue; value=-a1*mypow[i+50]-a2*mypow[j+50]; p=unsigned __int64(value*value)%M; while(hash[p].cnt && hash[p].value!=value) p=(p+1)%M; if (!hash[p].cnt) { hash[p].value=value; hash[p].cnt++; } else hash[p].cnt++; } } ans=0; for(i=-50;i<=50;i++) { if (!i) continue; sum=a3*mypow[i+50]; for(j=-50;j<=50;j++) { if (!j) continue; sum+=a4*mypow[j+50]; for(k=-50;k<=50;k++) { if (!k) continue; value=sum+a5*mypow[k+50]; p=unsigned __int64(value*value)%M; while(hash[p].cnt && hash[p].value!=value) p=(p+1)%M; ans+=hash[p].cnt; } sum-=a4*mypow[j+50]; } } printf("%I64d\n",ans); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator