FZU 1402 猪的安家 中国剩余定理
Posted legend_PawN
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FZU 1402 猪的安家 中国剩余定理相关的知识,希望对你有一定的参考价值。
中国剩余定理的模版题,注意在CRT过程中及时取模,防止在
M=m[1]∗m[2]∗m[3]…… 的过程中发生乘法的溢出
AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
typedef __int64 int64;
using namespace std;
int64 b[15],m[15]; //同余方程组 x=b[i] (mod m[i])
int64 ex_gcd(int64 a,int64 b,int64 &x,int64& y)
if(a==0 && b==0)
return -1;
if(b==0)
x=1;y=0;return a;
int64 d=ex_gcd(b,a%b,y,x);
y-=a/b*x;
return d;
int64 China_Reminder(int len,int64 b[],int64 m[])
int64 M=1;
int64 res=0;
for(int i=0;i<len;i++)
M=M*m[i];
for(int i=0;i<len;i++)
int64 a=M/m[i];
int64 x,y;
ex_gcd(a,m[i],x,y);
x=(x%m[i]+m[i])%m[i]; //求乘法逆元,取最小正整数解
res=(res+a*b[i]*x%M)%M;
return res;
int main()
int n;
//freopen("input.txt","r",stdin);
while(~scanf("%d",&n))
memset(b,0,sizeof(b));
memset(m,0,sizeof(m));
for(int i=0;i<n;i++)
scanf("%I64d%I64d",&m[i],&b[i]);
printf("%I64d\\n",China_Reminder(n,b,m));
以上是关于FZU 1402 猪的安家 中国剩余定理的主要内容,如果未能解决你的问题,请参考以下文章