求助!求助!求助!
查看原帖
求助!求助!求助!
194093
天梦楼主2021/2/2 11:02

到底哪里溢出了?

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<sstream>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<deque>
#include<cstdlib>
#include<ctime>
#define dd double
#define ll long long
#define ld long double
#define ull unsigned long long
#define N 100100
#define M number
using namespace std;

inline ll exgcd(ll a,ll b,ll &x,ll &y){
	if(b==0){
		x=1;
		y=0;
		return a;
	}
	int gcd=exgcd(b,a%b,x,y);
	int tmp=x;
	x=y;
	y=tmp-a/b*y;
	return gcd;
}

ll n;
ll a[N],b[N];

inline ll ksc(ll x,ll y,ll mod){
	ll z=(ld)x/mod*y;
	ll res=(ull)x*y-(ull)mod*z;
	return (res%mod+mod)%mod;
}

int main(){
//	freopen("P4777_13.in","r",stdin);
	scanf("%lld",&n);
	for(int i=1;i<=n;i++) scanf("%lld%lld",&a[i],&b[i]);
	ll m=a[1],x0=b[1];
	for(int i=2;i<=n;i++){
		ll t,q;
		ll g=exgcd(m,a[i],t,q);
		ll now_m=m/g*a[i];
		t=ksc(t,((b[i]-x0)/g+a[i])%a[i],a[i]);
		x0=(x0%now_m+ksc(t,m,now_m))%now_m;
		m=now_m;
	}
	printf("%lld",x0%m);
	return 0;
}
2021/2/2 11:02
加载中...