| Time Limit: 1000MS | Memory Limit: 65535KB |
| Submissions: 2312 | Accepted: 580 |
1 2 3 -4 1 1 1 1
39088 0
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 |
#include<stdio.h>#include<cstring>//using namespace std;#define MAX 1000000int
hash[MAX*2+1];int
main(){ int
i,j,sum; int
a,b,c,d,ans; while(scanf("%d %d %d %d",&a,&b,&c,&d)!=EOF) { ////若memset(hash,0,sizeof(hash));放此处会超时 if((a<0&&b<0&&c<0&&d<0)||(a>0&&b>0&&c>0&&d>0)) { printf("0\n"); continue; } memset(hash,0,sizeof(hash));/////////////位置决定是否超时 for(i=1;i<=100;i++) { for(j=1;j<=100;j++) { sum=a*i*i+b*j*j; hash[sum+MAX]++; } } ans=0; for(i=1;i<=100;i++) { for(j=1;j<=100;j++) { sum=-(c*i*i+d*j*j); ans+=hash[sum+MAX]; } } ans*=16; printf("%d\n",ans); } return
0;} |
原文:http://www.cnblogs.com/locojyw/p/3705010.html