首页 > 其他 > 详细

数论模版

时间:2014-05-11 14:44:01      阅读:363      评论:0      收藏:0      [点我收藏+]

 

//求gcd(a, b) 
LL gcd(LL a, LL b)
{
	return b ? gcd(b, a%b) : a;
}

 

//求整数x和y,使得ax+by=d, 且|x|+|y|最小。其中d=gcd(a,b) 
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);
	}
}

 

//计算模n下a的逆。如果不存在逆, 返回-1 
LL inv(LL a, LL n)
{
	LL d, x, y;
	gcd(a, n, d, x, y);
	return d == 1 ? (x+n)%n : -1;
}


 

数论模版,布布扣,bubuko.com

数论模版

原文:http://blog.csdn.net/u011686226/article/details/25492949

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!