60pts求助
查看原帖
60pts求助
1041060
_chicken_楼主2024/8/16 10:40
#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
2024/8/16 10:40
加载中...