I_need_help!
查看原帖
I_need_help!
658786
STUDENT00楼主2022/10/22 17:36

蒟蒻90分,实在不知道哪儿错了:

#include<bits/stdc++.h>
#define int __int128
using namespace std;
int n,a[11],b[11],ans;
void exgcd(int a,int b,int &x,int &y){
	if(!b){
		x=1,y=0;
		return;
	}
	exgcd(b,a%b,x,y);
	int t=x;
	x=y;
	y=t-a/b*y;
	return;
}
int read(){
	char c=getchar();
	while(c<48||c>57) c=getchar();
	int num=0;
	while(c>=48&&c<=57){
		num=(num<<3)+(num<<1)+c-48;
		c=getchar();
	}
	return num;
}
void print(int num){
	if(num){
		stack<int> st;
		while(num){
			st.push(num%10);
			num/=10;
		}
		while(!st.empty()){
			putchar(st.top()+48);
			st.pop();
		}
	}else putchar(48);
}
signed main(){
	n=read();
	for(int i=1;i<=n;i++) b[i]=read();
	for(int i=1;i<=n;i++) a[i]=read();
	for(int i=1;i<=n;i++) b[i]%=a[i];
	int mod=1;
	for(int i=1;i<=n;i++) mod*=a[i];
	for(int i=1;i<=n;i++){
		int pro=mod/a[i],x,y;
		exgcd(pro,a[i],x,y);
		ans=(ans+x*b[i]*pro)%mod;
	}
	if(ans<0) ans+=mod;
	print(ans);
	return 0;
}

有人帮我看看吗?

谢谢

2022/10/22 17:36
加载中...