求问gcd法sum初始值对结果的影响
查看原帖
求问gcd法sum初始值对结果的影响
750513
Red0rangE楼主2024/10/13 11:38

学习题解的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解答

2024/10/13 11:38
加载中...