【codevs 1200】【NOIP 2012】同余方程 拓展欧几里德求乘法逆元模板题

模板,,,

#include<cstdio>
using namespace std;
void exgcd(long long a,long long b,long long &x,long long &y){
	if (b==0) {x=1; y=0;}
	else {exgcd(b,a%b,x,y); int t=y; y=x-a/b*y; x=t;}
}
int main(){
	long long a,b,x,y;
	scanf("%lld %lld\n",&a,&b);
	exgcd(a,b,x,y);
	printf("%lld\n",(x+b)%b);
	return 0;
}

白书上的更简短的模板:

void gcd(LL a,LL b,LL &d,LL &x,LL &y){
	if (!b){
		d=a;
		x=1;
		y=0;
	}else{
		gcd(b,a%b,d,y,x);
		y-=x*(a/b);
	}
}
posted @ 2016-03-13 16:54  abclzr  阅读(165)  评论(0编辑  收藏  举报