求调悬关
查看原帖
求调悬关
800499
suzhikz楼主2024/6/8 14:01
#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;
long long last_ans;
long long n,a[100005],m[100005];
long long exgcd(long long a,long long b,long long &x,long long &y){
	if(b==0){
		x=1,y=0;
		return a;
	}
	long long d=exgcd(b,a%b,x,y);
	long long z=x;
	x=y;
	y=z-y*(a/b);
	return d;
}
long long lcm_m=1;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>m[i]>>a[i];
	for(int i=1;i<=n;i++){
		long long x,y;
		//cout<<a[i]-last_ans<<' '<<gcd(lcm_m,m[i])<<endl;
		if(1){
			//cout<<114514<<endl;
			long long gcd=exgcd(lcm_m,m[i],x,y);
			last_ans=last_ans+x*lcm_m*(a[i]-last_ans)/gcd;
			lcm_m=lcm_m*m[i]/gcd; 
		}
        //last_ans%=lcm_m;
	}
    cout<<lcm_m<<endl;
	cout<<last_ans%lcm_m;
	
	return 0;
}
2024/6/8 14:01
加载中...