rt,今天0.01ms前研究了一下光速幂,结果写挂了,自己觉得调不动了,所以来请教一下 dalao 们
代码如下:
#include<bits/stdc++.h>
using namespace std;
int a,b,c,n,pai,i,ac=1,arr1[10000],arr2[5000];
int get_pain(int n) {
int summ=0;
for(i=1;i*i<=n;++i) {
if(n%i==0) summ+=2;
if(i*i==n) --summ;
ac*=a;
ac%=c;
}
return summ;
}
int main(){
cin >> a >> c >> n;
pai=get_pain(c);
arr1[0]=1;
arr2[0]=1;
for(int j=1;j<=2*i;++j) arr1[j]=arr1[j-1]*ac%c;
for(int j=1;j<=i;++j) arr2[j]=max(1,arr2[j-1])*a%c,cout << arr2[j] << endl;
for(int j=0;j!=n;++j) {
cin >> b;
b=b%pai+pai;
cout << i << ' ' << b << ' ' << arr1[b/i] << ' ' << arr2[b%i] << ' ' << arr2[b%i] << endl;
cout << arr1[b/i]*arr2[b%i]%c << endl;
}
return 0;
}