为什么1495的板子改一下只拿十分。。。
查看原帖
为什么1495的板子改一下只拿十分。。。
271023
H_F_lenz楼主2020/8/7 09:17
#include<bits/stdc++.h>
using namespace std;
unsigned long long n,a[100001],b[100001],m=1,ans=0;
void exgcd(long long a,long long b,long long &x,long long &y)
{
	if(b==0)
	{
		x=1;y=0;
		return;
	}
	long long q=a/b,r=a%b;
	exgcd(b,r,y,x);
	y-=q*x;
}
long long mod_inverse(long long a, long long m)
{    
	long long x,y;
    exgcd(a,m,x,y);
    return  (x%m + m) % m;                          
}
int main()
{
	cin>>n;
	for(unsigned long long i=1;i<=n;i++)
	{
		cin>>b[i]>>a[i];
		b[i]=(b[i]%a[i]+a[i])%a[i];
		m*=a[i];
	}
	for(unsigned long long i=1;i<=n;i++)
	{
		long long x,y;
		ans+=(b[i]*(m/a[i])*mod_inverse(m/a[i],a[i]));
		ans%=m;
	}
	cout<<ans;
	return 0;
}

2020/8/7 09:17
加载中...