EXCRT蒟蒻72pts求助
查看原帖
EXCRT蒟蒻72pts求助
315005
White_gugu楼主2021/7/18 21:50

后三个点WA掉了,劳烦各位大佬帮小蒟蒻看看

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
long long gcd(long long x,long long y)
{
	long long gd=x%y;
	while(gd)
	{
		x=y;
		y=gd;
		gd=x%y;
	}
	return y;
}
long long ml(long long x, long long y,long long mo) 
{
	x%=mo, y%=mo;
	long long z=(long double)x*y/mo+0.5;
	z=x*y-z*mo;
	return (z%mo+mo)%mo;
}
void exgcd(long long a,long long b,long long &x,long long &y)
{
	if(b==0)
	{
		x=1,y=0;
		return;
	}
	long long tx=0,ty=0;
	exgcd(b,a%b,tx,ty);
	x=ty;
	y=tx-a/b*ty;
	return;
}
long long n;
long long a1,b1,a2,b2;
int main()
{
	scanf("%lld",&n);
	a1=1,b1=0;
	for(int i=1;i<=n;i++)
	{
		scanf("%lld %lld",&a2,&b2);
		long long gcd1=gcd(a1,a2);
		long long x=0,y=0;
		long long mod=a1*a2/gcd1;
		exgcd(a1/gcd1,a2/gcd1,x,y);
		x=(x%mod+mod)%mod;
		long long a=ml(x,(b2-b1)/gcd1,a2/gcd1)%mod;
		b1=(ml(a,a1,mod)+b1)%mod;
		a1=mod,b1=(b1%a1+a1)%a1;
	}
	printf("%lld\n",b1);
}
2021/7/18 21:50
加载中...