题解 P1495 【曹冲养猪】
Refined_heart · · 题解
刚刚学完
题目大意已经很明确了,而且还告诉我们可以假定猪圈数(模数)互质,显然套板子咯
一共
设
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long LL;
LL n,a[500000],b[500000],M=1;
inline void Exgcd(LL a,LL b,LL &d,LL &x,LL &y){
if(!b){d=a;x=1;y=0;}
else{
Exgcd(b,a%b,d,x,y);
LL t=x;x=y;y=t-(a/b)*y;
}
}
inline LL IntChina(){
LL Ans=0,Mi,x,y,d;
for(LL i=1;i<=n;++i){
Mi=M/a[i];
Exgcd(Mi,a[i],d,x,y);
Ans=((Ans+Mi*x*b[i])%M+M)%M;
}return (Ans+M)%M;
}
int main(){
scanf("%lld",&n);
for(LL i=1;i<=n;++i){
scanf("%lld%lld",&a[i],&b[i]);
M*=a[i];
}
printf("%lld\n",IntChina());
return 0;
}
对于模数不互质的方程组,我们有拓展中国剩余定理求解。