Time Limit: 5000MS |
|
Memory Limit: 65536K |
Total Submissions: 9567 |
|
Accepted: 4710 |
Description
Input
Output
Sample Input
37 29 41 43 47
Sample Output
654
题解:简单哈希。数组定义成char型。
#include<iostream> #include<cstring> #include<cstdio> using namespace std; const int MOD=19999999; int ans[111]; char hashtb[MOD]; int main() { int n,cnt=0; int a1,a2,a3,a4,a5; for(int i=-50;i<=50;i++){ if(i==0)continue; ans[cnt++]=i*i*i; } while(scanf("%d %d %d %d %d",&a1,&a2,&a3,&a4,&a5)!=EOF){ memset(hashtb,0,sizeof(hashtb)); for(int i=0;i<100;i++){ for(int j=0;j<100;j++) for(int k=0;k<100;k++){ int temp=a1*ans[i]+a2*ans[j]+a3*ans[k]; if(temp<0) temp+=MOD; temp=temp%MOD; hashtb[temp]++; } } cnt=0; for(int i=0;i<100;i++){ for(int j=0;j<100;j++){ int temp=-(a4*ans[i]+a5*ans[j]); if(temp<0) temp+=MOD; temp=temp%MOD; cnt+=hashtb[temp]; } } printf("%d\n",cnt); } return 0; }