A.数学等式
数据比较小,可以暴力+折半枚举。
#include<bits/stdc++.h> #define ll long long #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int maxn=200010; map<int,int>mp; int main() { int N,A,B,C,D,E; ll ans=0; scanf("%d%d%d%d%d",&A,&B,&C,&D,&E); rep(i,-50,50) rep(j,-50,50) rep(k,-50,50){ if(i*j*k==0) continue; int x=A*i*i*i+B*j*j*j+C*k*k*k; mp[x]++; } rep(i,-50,50) rep(j,-50,50){ if(i*j==0) continue; int x=D*i*i*i+E*j*j*j; ans+=mp[x]; } printf("%lld\n",ans); return 0; }