#include<bits/stdc++.h>
#define int __int128
using namespace std;
int n,a[20],b[20],m[20],inv[20];
int M=1,ans[20];
__int128 read()
{
__int128 res=0;
char scan[1005];
scanf("%s",scan);
for(int i=0;i<strlen(scan);i++)
res*=10,res+=scan[i]-'0';
return res;
}
void print(__int128 num){
if(num>9)
print(num/10);
putchar(num%10+'0');
}
int fpow(int a,int b,int p){
int res=1,base=a;
while(b>0){
if(b%(int)2==1) res*=base,res%=p;
base*=base;
base%=p;
b/=2;
}
return res;
}
signed main(){
n=read();
for(int i=1;i<=n;i++){
a[i]=read();
b[i]=read();
M*=a[i];
}
for(int i=1;i<=n;i++){
m[i]=M/a[i];
inv[i]=b[i]*fpow(m[i]%a[i],a[i]-(int)2,a[i])%M;
}
int ansss=0;
for(int i=1;i<=n;i++){
ans[i]=(inv[i]*m[i])%M;
ansss+=ans[i];
ansss%=M;
}
print(ansss%M);
return 0;
}
错误数据:
3
9982 923
9983 1234
9985 4321