本蒟蒻懒得去学CRT了,写了个暴力,稍微优化了一点,就A了?
代码如下,请大佬帮我看一下我这是怎么A的,是不是因为数据太水呢?
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
inline 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<<1)+(x<<3)+ch-'0';
ch=getchar();
}
return x*f;
}
struct node{
long long mod,s;
}a[20];
bool cmp(node x,node y){
return x.mod>y.mod;
}
int main(){
int n=read();
for(int i=1;i<=n;i++) a[i].mod=read(),a[i].s=read();
sort(a+1,a+n+1,cmp);
long long as=a[1].s,now=1;
for(int i=2;i<=n;i++){
long long f=now*a[i-1].mod/__gcd(now,a[i-1].mod);
while(!(as%a[i].mod==a[i].s)) as+=f;
now=f;
}
printf("%lld",as);
return 0;
}