逆元(费马,扩展欧几里得)
int ksm(int a,int b) {int ans=1;while(b) {if(b&1)ans=(ans*a)%mod;a=(a*a)%mod;b>>=1;}return ans; } int ex_gcd(int a,int b,int &x,int &y){if(b==0){x=1;y=0;return x;}int ans=ex_gcd(b,a%b,x,y);int tm=x;x=y;y=tm-a/b*y;return ans; }
int ksm(int a,int b) {int ans=1;while(b) {if(b&1)ans=(ans*a)%mod;a=(a*a)%mod;b>>=1;}return ans; } int ex_gcd(int a,int b,int &x,int &y){if(b==0){x=1;y=0;return x;}int ans=ex_gcd(b,a%b,x,y);int tm=x;x=y;y=tm-a/b*y;return ans; }