中国剩余定理 12@亿万星辰


#include <bits/stdc++.h>
using namespace std;
#define MAX 100000
int ex_gcd(int a,int b,int &x,int &y)//扩展欧几里得定理 
{
	int d;
	if(b==0){
		x=1;
		y=0;
		return a;
	}
	d=ex_gcd(b,a%b,y,x);
	y-=a/b*x;
	return d;
}
int Chinese_Remainder(int a[],int prime[],int len)//中国剩余定理 
{
	int m=1,M,R,y,d,sum=0;
	for(int i=1;i<=len;i++) m*=prime[i];
	for(int i=1;i<=len;i++){
		M=m/prime[i];
		d=ex_gcd(M,prime[i],R,y);//求出最大公约数和a的逆元R 
		sum=(sum+a[i]*M*R)%m;//求∑(Rj*Mj)*aj  %m 
	}
	return (m+sum%m)%m;
} 
int main()
{
	int a[MAX],m[MAX],ant=0,x,b,d;
	while(scanf("%d",&b)!=0&&scanf("%d",&d)!=0&&b!=0){//赋值输入0 0时结束 
		++ant;
		a[ant]=d,m[ant]=b;
	}
	x=Chinese_Remainder(a,m,ant);
	printf("%d\n",x);
	return 0;
}
中国剩余定理和扩展欧几里得定理



全部评论

相关推荐

门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
07-03 16:02
门头沟学院 Java
今天面试,非常紧张,面试官问我springboot有哪些核心模块都答不上来了,真的对自己无语了!
程序员小白条:28届我勒个去,很多人面试都没机会
查看1道真题和解析
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务