求助P4777
查看原帖
求助P4777
420102
phmaprostrate楼主2021/8/27 11:04

想知道无解情况则么处理,虽然这题保证有解。

#include<bits/stdc++.h>
using namespace std;
long long read()
{
    long long f=1,x=0;
    char ss=getchar();
    while(ss<'0'||ss>'9'){if(ss=='-')f=-1;ss=getchar();}
    while(ss>='0'&&ss<='9'){x=x*10+ss-'0';ss=getchar();}
    return f*x;
}
 long long ksc(long long x,long long y){
	if(y==0) return 0;
  long long	z=ksc(x,y/2);
       z=(z+z);
     if(y%2==1) z=(z+x);
	 return z; 
}
long long gcd(long long a,long long b)
{
	if (b==0) return a;
	else return gcd(b,a%b);
}

void memge(long long &a1,long long &m1,long long a2,long long m2){
	
	if(m2>m1) swap(m1,m2),swap(a1,a2);
	while(a1%m2!=a2){
	 a1=a1+m1;
	}

	m1 =(m2/gcd(m1,m2))*m1;
}

long long a1,m1;
int main(){

	int n;
    n=read();
    m1=read();
    a1=read();
     a1%=m1; 
		for(int i=1;i<n;i++){
		long long a2;long long m2;
		m2=read();a2=read();
		a2%=m2;
		memge(a1,m1,a2,m2);
	}
	
	cout<<(a1+m1)%m1;
	return 0;
}
2021/8/27 11:04
加载中...