那个晚上,1260C将我的名字颜色,彻底地改变了——《抱零之子》
题目链接
Solution CF1260C
题目大意:给定一段长为\(10^{100}\)的木板,编号从\(0\)到\(10^{100}-1\),给定\(r,b,k \leq 10^9\),如果木板编号被\(r\)整除则必须刷成红色,被\(b\)整除必须刷成蓝色,如果同时被\(r,b\)整除可以任意刷颜色,问是否存在一种合法方案
分析:
\(10^{100}\)可以当做无限大了
首先我们假定\(r,b\)互质,否则由于木板无限长以及我们只需要判断是否有解,我们将\(r,b\)都除以\(gcd(r,b)\)不会影响答案
假定\(r<b\),然后我们就可以非常愉快的判断了
此时\(r,b\)互质,我们假定无解,那么连续\(k\)段红色有\(r(k-1)+1\)长,其中不应该有蓝色木板,所以如果\(r(k-1)+1<b\)无解,否则有解
#include <algorithm>
#include <cstdio>
using namespace std;
typedef long long ll;
int gcd(int a,int b){return !b ? a : gcd(b,a % b);}
int t,r,b,k;
inline void solve(){
scanf("%d %d %d",&r,&b,&k);
int w = gcd(r,b);
r /= w;
b /= w;
if(r > b)swap(r,b);
if(ll(k - 1) * r + 1 < b)puts("REBEL");
else puts("OBEY");
}
int main(){
scanf("%d",&t);
while(t--)solve();
return 0;
}