题目大意:在给定的区间【l,r】中能不能选出若干数(同一个数使用的次数不限)使得组成数n,每个数使用的次数不限。
思路:这道题只需要判断一下n是不是在能组成区间的范围内即可。所以可以将使用的最大数量的钱和最少数量的钱算出。那么就得到一个可以凑出钱数的区间[mi*l,mi*r]。(注意再算使用最少数量的钱数时如果能r能被n整除则为n/r,否则为n/r+1 如 7 3 4最少要2个 )
#include <iostream>
#include <cstring>
#include<cmath>
#include<cstdio>
using namespace std;
int main()
{
long long n,m,i,j,k,l,r;
scanf("%lld",&k);
while(k--)
{
scanf("%lld%lld%lld",&n,&l,&r);
if(n<l)
{
printf("No\n");
continue;
}
long long mi;
long long ma=n/l;
if(n%r==0)
mi=n/r;
else
mi=n/r+1;
if(l*mi<=n&&n<=r*ma)
{
printf("Yes\n");
}
else
printf("No\n");
}
return 0;
}