hash数组 POJ1840

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 
 5 using namespace std;
 6 
 7 short has[25000010];
 8 
 9 int main()
10 {
11     long long ans=0;
12     int a1,a2,a3,a4,a5;
13     while(scanf("%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5)!=EOF)
14     {
15         memset(has,0,sizeof(has));
16         for(int i=-50;i<=50;i++)
17         {
18             if(i==0)
19                 continue;
20             for(int t=-50;t<=50;t++)
21             {
22                 if(t==0)
23                     continue;
24                 has[12500000+a1*i*i*i+a2*t*t*t]++;
25             }
26         }
27         for(int i=-50;i<=50;i++)
28         {
29             if(i==0)
30                 continue;
31             for(int j=-50;j<=50;j++)
32             {
33                 if(j==0)
34                     continue;
35                 for(int t=-50;t<=50;t++)
36                 {
37                     if(t==0)
38                         continue;
39                     if(12500000+a3*i*i*i+a4*j*j*j+a5*t*t*t>=0&&12500000+a3*i*i*i+a4*j*j*j+a5*t*t*t<=25000000)
40                         ans+=has[12500000+a3*i*i*i+a4*j*j*j+a5*t*t*t];
41                 }
42             }
43         }
44         cout<<ans<<endl;
45     }
46     return 0;
47 }
View Code

 

posted @ 2015-08-17 09:43  相儒以沫  阅读(154)  评论(0编辑  收藏  举报