萌新刚学OI 0.1ms,求助光速幂
  • 板块灌水区
  • 楼主TLEWA
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/8/30 18:21
  • 上次更新2023/10/27 13:02:57
查看原帖
萌新刚学OI 0.1ms,求助光速幂
515129
TLEWA楼主2022/8/30 18:21

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;
}

2022/8/30 18:21
加载中...