方程式
方程式
Time Limit: 1000MS | Memory Limit: 65535KB |
Submissions: 2312 | Accepted: 580 |
Sample Input
1 2 3 -4 1 1 1 1
Sample Output
39088 0
#include<stdio.h> #include<cstring> //using namespace std; #define MAX 1000000 int 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; }