AcWing 3725. 卖罐头
原题链接
简单
作者:
NumPy
,
2021-06-24 19:55:04
,
所有人可见
,
阅读 252
数学
$O(T)$
C++ 代码
#include <iostream>
#include <cstdio>
using namespace std;
int T, l, r;
// x >= x mod a >= a / 2 --> a <= 2 * x
// 对[l, r]区间的数取余的最大范围是[a / 2, a - 1] (a >= 2)
// 此区间的长度为 a - 1 - a / 2 + 1 = a / 2, 故[l, r]的区间长度应该小于等于 a / 2
// 即 r - l + 1 <= a / 2, 由于要使[l, r]中的每个数都满足条件且 a <= 2 * x, 故x取l合适
// 带入得 r - l + 1 <= l --> r <= 2 * l - 1时满足条件
int main(){
cin >> T;
while(T--){
cin >> l >> r;
if(r <= 2 * l - 1) puts("YES");
else puts("NO");
}
return 0;
}