# codeforces 1245 A. A. Good ol' Numbers Coloring(數學)
阿新 • • 發佈:2020-07-13
題目大意
給出a,b,按照圖中要求染色,問黑色格子是否是有限個(Finite)。
解題思路
這是codeforce官方題解:
根據染色要求,一個格子如果能表示成\(ax+by(a,b為整數)\)的形式,那麼這個格子可以被染成白色。由數學知識可以知道ax+by % gcd(a,b) = 0
,反之任意不能被\(gcd(a,b)\)整除的數都不能表示成\(ax+by\)的形式。
接下來證明,任意一個數\(x^{'}(x^{'}>=a*b)\)能用兩個互質的數\((a,b)\)來表示。
構造集合\(S = \{x^{'}, x^{'} - a, x^{'} - 2a, \dots, x^{'} - (b - 1) a\}\)
也就是集合S中一定存在一個能整除b的數,這個能整除b的數\(x^{'}-sa\)能表示成\(ax+by\)的形式,被染成白色,這個數加上\(sa\)得到\(x^{'}\),也能染成白色。這樣就證明了任意一個數\(x^{'}(x^{'}>=a*b)\)能表示成\(ax+by\)的形式。
#include <bits/stdc++.h> using namespace std; int t,a,b; int main(){ cin>>t; while(t--){ cin>>a>>b; if(__gcd(a,b)==1)cout<<"Finite\n"; else cout<<"Infinite\n"; } return 0; }