P3868 [TJOI2009] 猜数字
作者:互联网
\(b_i|(n-a_i)\)。
可转化为 \(n\equiv a_i\pmod{b_i}\)。
然后CRT。
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,x=0;
const int maxn=15;
int a[maxn],b[maxn],m[maxn],t[maxn],M=1;
void exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1,y=0;return ;
}
exgcd(b,a%b,y,x);y-=a/b*x;
}
int ny(int a,int mod){
int x,y;
exgcd(a,mod,x,y);
return (x%mod+mod)%mod;
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=1;i<=n;i++)cin>>a[i],M*=a[i];
for(int i=1;i<=n;i++)m[i]=M/a[i],t[i]=ny(m[i],a[i]);
for(int i=1;i<=n;i++)x+=((__int128)b[i]*m[i]%M*t[i]%M),x%=M;
cout<<x;
return 0;
}
标签:return,数字,int,exgcd,P3868,maxn,long,TJOI2009,mod 来源: https://www.cnblogs.com/kkksc0100/p/guess.html