南阳理工OJ 136 等式
#include<cstdio>#include<vector>using namespace std;const int MAX=100000;const int Max=2*50*50*50*50;struct node{int date;int num;}term;vector<node>v[MAX];vector<node>::iterator it;int main(){//freopen("in.txt","r",stdin);int i,j,k;int a[5];int T;long long sum,ves,result;scanf("%d",&T);while(T--){for(i=0;i<5;i++)scanf("%d",&a[i]);for(i=-50;i<=50;i++){if(i==0)continue;for(j=-50;j<=50;j++){if(j==0)continue;sum=a[0]*i*i*i+a[1]*j*j*j;ves=sum>0?sum:-sum;ves%=MAX;for(it=v[ves].begin();it!=v[ves].end();it++)if(it->date==sum){it->num++;break;}if(it==v[ves].end()){term.date=sum;term.num=1;v[ves].push_back(term);}}}for(i=-50,result=0;i<=50;i++){if(i==0)continue;for(j=-50;j<=50;j++){if(j==0)continue;for(k=-50;k<=50;k++){if(k==0)continue;sum=a[2]*i*i*i+a[3]*j*j*j+a[4]*k*k*k;ves=sum>0?sum:-sum;if(ves>Max)continue;ves%=MAX;for(it=v[ves].begin();it!=v[ves].end();it++){if(it->date==sum){result+=it->num;break;}}}}}printf("%lld\n",result);for(i=0;i<MAX;i++)v[i].clear();}return 0;}?