1 条题解

  • -1
    @ 2021-04-14 15:36:07

    P1229 阅读程序 题解
    本题是刷知乎的时候想到的,问x=100一直减3会不会得到0.
    答案是:会,因为会溢出。
    所以本题实质是问\(2^{32}x+by+a=0\)是否有整数解,x是溢出次数。根据裴蜀定理,其充分必要条件是:
    \(gcd(pow(2,32),b)|a\)
    其中gcd表示最大公约数。

    (另外,本题一开始是想问需要多少次循环才能变为0,这个问题用拓展欧几里得算法可以解决。)
    Code:

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long int ll;
    ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
    void solve()
    {
        ll a,b;cin>>a>>b;
        if(a%gcd(b,pow(2,32))==0)cout<<"YES\n";else cout<<"NO\n";
    }
    int main()
    {
        int t;cin>>t;
        while(t--)solve();
        return 0;
    }
    
  • 1

信息

ID
1229
难度
5
分类
欧几里得算法 点击显示
标签
递交数
320
已通过
4
通过率
1%
被复制
9
上传者