P4777 WA on#15 求调
  • 板块灌水区
  • 楼主lcy0506
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/6 16:54
  • 上次更新2024/8/6 17:49:56
查看原帖
P4777 WA on#15 求调
1044302
lcy0506楼主2024/8/6 16:54
#include <bits/stdc++.h>
using namespace std;
long long a[1000001],b[1000001],A,B,ans1,ans2;
long long x,y,d;
void exgcd(long long &x,long long &y,long long suma,long long sumb)
{
	if(sumb==0)
	{
		d=suma;
		x=1;
		y=0;
		return;
	}
	exgcd(y,x,sumb,suma%sumb);
	y-=suma/sumb*x;
}
void excrt()
{
	exgcd(x,y,ans1,A);
	long long c=B-ans2;
	if(c%d==0)
	{
		x=x*c/d%(A/d);
		if(x<0)
		x+=A/d;
		long long mod=ans1/__gcd(ans1,A)*A;
		ans2=(ans1*x+ans2)%mod;
		if(ans2<0)
		ans2+=mod;
		ans1=mod;
	}
}
signed main()
{
	long long n;
	cin>>n;
	for(long long i=1;i<=n;i++)
	{
		cin>>a[i]>>b[i];
	}
	for(long long i=1;i<=n;i++)
	{
		A=a[i],B=b[i];
		if(i>1)
		excrt();
		else
		ans1=A,ans2=B;
	}
	cout<<ans2%ans1;
}
2024/8/6 16:54
加载中...