rt,打了14个点之后发现会没逆元人就傻了,听同学写的矩乘什么的太晚了就没写,早上起来,看看最短的发现不到300b,人傻了,没看懂
就是直接特判a=1,用 m×(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;
}