PKU 1840-Eqs
問題概要
a1x13+a2x23+a3x33+a4x43+a5x53=0
を満たすような整数x1,x2,x3,x4,x5を全て求め,その種類の個数を答えよ
解法
x4,x5とx1,x2,x3についてそれぞれ列挙する.
計算量が50^3になり間に合う.
実装(C++)
#include <iostream> #include <vector> #include <map> using namespace std; int a[5]; short count[6250000*6]; const int CMT=6250000*6/2; int main() { for(int i=0;i<5;i++)cin>>a[i]; //後ろ2つの列挙 for(int x4=-50;x4<=50;x4++){ for(int x5=-50;x5<=50;x5++){ if(x4==0)continue; if(x5==0)continue; count[x4*x4*x4*a[3]+a[4]*x5*x5*x5+CMT]+=1; } } int res=0; for(int x1=-50;x1<=50;x1++){ for(int x2=-50;x2<=50;x2++){ for(int x3=-50;x3<=50;x3++){ if(x2==0)continue; if(x1==0)continue; if(x3==0)continue; res+=count[-(a[0]*x1*x1*x1+a[1]*x2*x2*x2+a[2]*x3*x3*x3)+CMT]; } } } cout<<res<<endl; return 0; }