求调
查看原帖
求调
800499
suzhikz楼主2024/6/8 12:50
#include<iostream>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<cstdio>
#include<string>
#include<deque>
#include<stack>
#include<queue>
#include<vector>
#include<stdio.h>
#include<map>
#include<set>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#include<bitset>
using namespace std;
__int128 last_ans;
__int128 n,a[100005],m[100005];
__int128 exgcd(__int128 a,__int128 b,__int128 &x,__int128 &y){
	if(b==0){
		x=1,y=0;
		return a;
	}
	__int128 d=exgcd(b,a%b,x,y);
	__int128 z=x;
	x=y;
	y=z-y*(a/b);
	return d;
}
__int128 gcd(__int128 a,__int128 b){
	if(b==0)return a;
	return gcd(b,a%b);
}
__int128 lcm_m=1;
void write(__int128 x){
	if(x>9)write(x/10);
	putchar(x%10+'0');
}
int main(){
	long long book;
	cin>>book;n=book;
	for(int i=1;i<=n;i++){
		cin>>book;m[i]=book;
		cin>>book;a[i]=book;
	}
	for(int i=1;i<=n;i++){
		__int128 x,y;
		//cout<<a[i]-last_ans<<' '<<gcd(lcm_m,m[i])<<endl;
		if((a[i]-last_ans)%gcd(lcm_m,m[i])==0){
			//cout<<114514<<endl;
			exgcd(lcm_m,m[i],x,y);
			last_ans=last_ans+x*lcm_m*(a[i]-last_ans)/gcd(lcm_m,m[i]);
			lcm_m=lcm_m*m[i]/gcd(lcm_m,m[i]); 
		}
        //last_ans%=lcm_m;
	}
	write((last_ans+lcm_m)%lcm_m);
	
	return 0;
}

2024/6/8 12:50
加载中...