给定质数 p,自然数 n,求方程解的数量
xn+yn≡zn(mod p)
0<=x,y,z<=n−1
#include<bits/stdc++.h>
using namespace std;
const int MAXN=3e6;
int ksm(int x,int y,int z){
int ans=1;
while (y>0){
if (y&1){
ans*=x%z;
ans%=z;
}
y>>=1,x=x*x%z;
}
return ans;
}
int n,p,ans,f[MAXN];
int main(){
cin>>p>>n;
for(int i=0;i<n-1;i++){
f[ksm(i,n,p)]++;
}
for(int i=0;i<p;i++){
for(int j=0;j<p;j++){
if(i==j){
ans+=f[i]*f[(2*i)%p];
}else{
ans+=f[i]*f[j]*f[(i+j)%p];
}
}
}
cout<<ans;
return 0;
}
```