标签:整数 正整数 style pre quick lan gcd show a*
一、数论
void gcd(int a,int b,int &d,int &x,int &y) { if(!b) { d=a; x=1; y=0; } else { gcd(b,a%b,d,y,x); y-=x*(a/b); } }
//解同余方程 ax≡c(mod b) //转化为ax-by=c void solve() { gcd(a,b,g,x0,y0); if(c%g) printf("no solution"); x=c/g*x0; y=c/g*y0; printf("任意一组解:%d",x); a/=g; b/=g; while(x-b>0) { x-=b; y+=a; } printf("最小x正整数解:%d",x); }
扩展欧几里得、同余方程 解析:http://www.cnblogs.com/TheRoadToTheGold/p/6645383.html
int quickmul(int a,int b,int p) { int ans=1; for(;b;b>>=1,a=a*a%p) if(b&1) ans=ans*a%p; return ans; }
标签:整数 正整数 style pre quick lan gcd show a*
原文地址:http://www.cnblogs.com/TheRoadToTheGold/p/7323273.html