学习题解的AC代码如下
#include <bits/stdc++.h>
using namespace std;
#define int long long
struct pig{
int a,b;
}p[15];
int n,ans,sum=1;
int gcd(int a,int b){
if (a%b==0) return b;
return gcd(b,a%b);
}
signed main(){
cin>>n;
for (int i=1;i<=n;i++) cin>>p[i].a>>p[i].b;
ans=p[1].b;
for (int i=1;i<n;i++){
sum=sum*p[i].a/gcd(sum,p[i].a);
while (ans%p[i+1].a!=p[i+1].b) ans+=sum;
}
cout<<ans;
return 0;
}
蒟蒻在学习中偶然发现~~(其实是代码打错了)~~
在第7行定义sum=0时会导致有两个点过了,其余TLE(疑似由于for循环中第一次对sum的更改错误而导致while循环无法达到退出条件)
但是蒟蒻求问为什么在错误地定义sum=0后仍可能输出正确答案呢?(蒟蒻认为是由于恰好这两个点的第一条条件无效)
求dalao解答