你是一个叛军领袖,你正计划在你的国家发动一场革命。但邪恶的政府发现了你的计划,对你的惩罚是劳动教养。
你必须用两种颜色涂抹一个由10100块木板组成的栅栏,方法如下(假设木板从0开始从左到右编号)。
如果木板的指数可以被r整除(这种木板的指数为0、r、2r,以此类推),那么你必须把它涂成红色。
如果木板的指数能被b整除(这种木板的指数为0、b、2b等),那么你必须把它涂成蓝色。
如果索引既能被r又能被b整除,你就可以选择颜色来涂抹木板。
否则,你根本不需要给木板上漆(而且禁止在木板上用漆)。
此外,政府还增加了一个额外的限制,使你的惩罚更加严重。让我们把栅栏上的所有油漆木板按升序排列:如果在这个列表中连续有K块相同颜色的木板,那么政府将说明你的劳动失败,并立即处决你。如果你不按照上述四个条件涂抹栅栏,你也将被处决。
问题是:你是否能够完成劳动(时间并不重要),或者执行是不可避免的,你需要不惜一切代价逃跑。
输入
第一行包含单个整数T(1≤T≤1000)--测试案例的数量。
接下来的T行包含测试用例的描述--每行一个。每个测试案例包含三个整数r,b,k(1≤r,b≤109,2≤k≤109)--相应的系数。
输出
打印T字-每行一个。对于每个测试案例,如果执行是不可避免的,打印REBEL(不区分大小写),否则打印OBEY(不区分大小写)。
例子
输入复制
4
1 1 2
2 10 4
5 2 3
3 2 2
outputCopy
OBEY
REBEL
OBEY
OBEY
首先引入一个概念裴蜀定理
gcd(a,b) = c那么一定(x*a+y*b)为c的倍数,一定存在整数x,y使得a*x+b*y = c
本题思路
出现连续为k个颜色块的情况一定是在(假设r<b)某个b*x~b*(x+1)的区间中有连续k个r
利用贪心的思想求最大的情况应是y*r - x*b = ?
利用裴蜀定理我们可以得到所求区间中第一个r与左边界的距离
b减去这个距离得到一个p
出现k个r的最小所需距离为(k-1)*r+1;
如果p>=(k-1)*r+1说明一定会执行
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long l,r,k;
scanf("%lld%lld%lld",&l,&r,&k);
long long kong = __gcd(l,r);
long long you = max(l,r) - kong;
long long need = min(l,r)*(k - 1) + 1;
if(you >= need)
{
printf("REBEL\n");
}
else
{
printf("OBEY\n");
}
}
}