数论垃圾求助昨晚E最短代码什么原理
  • 板块学术版
  • 楼主fangzichang
  • 当前回复13
  • 已保存回复13
  • 发布时间2023/3/12 07:59
  • 上次更新2023/10/23 21:49:49
查看原帖
数论垃圾求助昨晚E最短代码什么原理
678087
fangzichang楼主2023/3/12 07:59

rt,打了14个点之后发现会没逆元人就傻了,听同学写的矩乘什么的太晚了就没写,早上起来,看看最短的发现不到300b,人傻了,没看懂

就是直接特判a=1,用 m×(a1)m \times (a-1) 做模数跑快速幂,直接套公式,直接除就完了?

不能理解

#include<bits/stdc++.h>
using namespace std;
#define i __int128
i d;
i q(i x,i k){
	i r=1;
	for(;k;k/=2,x=x*x%d){
		if(k&1) r=r*x%d;
	}	
	return (r==0?d:r);
}
signed main(){
	long long a,x,m;
	cin>>a>>x>>m;
	if(a==1){
		cout<<x%m<<endl;
		return 0;
	}
	d=(i)(a-1)*m;
	cout<<(long long)((q(a,x)-1)/(a-1));
	return 0;
}
2023/3/12 07:59
加载中...