84分求调
查看原帖
84分求调
655089
wch2021楼主2024/8/21 11:28

只有最后一个点WA dalao救命

#include<bits/stdc++.h>
#define int long long
using namespace std;
int read()
{
	int x=0,f=1;
	char ch=getchar();
	while(!(ch<='9'&&ch>='0'))
	{
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch<='9'&&ch>='0')
	{
		x=(x<<3)+(x<<1)+(ch^48);
		ch=getchar();
	}
	return x*f;
}
void write(int x)
{
	if(x<0)
	{
		putchar('-');
		x=-x;
	}
	if(x>9) write(x/10);
	putchar('0'+x%10);
}
int exgcd(int a,int b,int &x,int &y)
{
	if(!b)
	{
		x=1;
		y=0;
		return a;
	}
	int d=exgcd(b,a%b,x,y);
	int tp=x;
	x=y;
	y=tp-a/b*y;
	return d;
}
struct node
{
	int a,b;
}p[100010];
signed main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	int n=read();
	for(int i=1;i<=n;i++)
	{
		p[i].a=read();
		p[i].b=read();
	}
	int ans=p[1].b,M=p[1].a,t,y;
    for(int i=2;i<=n;i++)
	{
        int mi=p[i].a,r=((p[i].b-ans)%mi+mi)%mi,d=exgcd(M,mi,t,y);
        t=(t*(r/d))%mi;
        ans+=t*M;
        M=mi/d*M;
        ans=(ans%M+M)%M;
    }
	write(ans);
	return 0;
}
2024/8/21 11:28
加载中...