1 条题解
-
-1Takagi-san (njnu19200437) LV 10 MOD @ 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