首页 技术 正文
技术 2022年11月19日
0 收藏 517 点赞 4,409 浏览 3199 个字

Time Limit: 2 sec / Memory Limit: 1024 MB

Score : 600600 points

Problem Statement

Ringo Mart, a convenience store, sells apple juice.

On the opening day of Ringo Mart, there were AA cans of juice in stock in the morning. Snuke buys BB cans of juice here every day in the daytime. Then, the manager checks the number of cans of juice remaining in stock every night. If there are CC or less cans, DD new cans will be added to the stock by the next morning.

Determine if Snuke can buy juice indefinitely, that is, there is always BB or more cans of juice in stock when he attempts to buy them. Nobody besides Snuke buy juice at this store.

Note that each test case in this problem consists of TT queries.

Constraints

  • 1≤T≤3001≤T≤300
  • 1≤A,B,C,D≤10181≤A,B,C,D≤1018
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

TT
A1A1 B1B1 C1C1 D1D1
A2A2 B2B2 C2C2 D2D2
::
ATAT BTBT CTCT DTDT

In the ii-th query, A=Ai,B=Bi,C=Ci,D=DiA=Ai,B=Bi,C=Ci,D=Di.

Output

Print TT lines. The ii-th line should contain Yes if Snuke can buy apple juice indefinitely in the ii-th query; No otherwise.


Sample Input 1 Copy

Copy

14
9 7 5 9
9 7 6 9
14 10 7 12
14 10 8 12
14 10 9 12
14 10 7 11
14 10 8 11
14 10 9 11
9 10 5 10
10 10 5 10
11 10 5 10
16 10 5 10
1000000000000000000 17 14 999999999999999985
1000000000000000000 17 15 999999999999999985

Sample Output 1 Copy

Copy

No
Yes
No
Yes
Yes
No
No
Yes
No
Yes
Yes
No
No
Yes

In the first query, the number of cans of juice in stock changes as follows: (D represents daytime and N represents night.)

99 →D 22 →N 1111 →D 44 →N 1313 →D 66 →N 66 →D x

In the second query, the number of cans of juice in stock changes as follows:

99 →D 22 →N 1111 →D 44 →N 1313 →D 66 →N 1515 →D 88 →N 88 →D 11 →N 1010 →D 33 →N 1212 →D 55 →N 1414 →D 77 →N 77 →D 00 →N 99 →D 22 →N 1111 →D …

and so on, thus Snuke can buy juice indefinitely.


Sample Input 2 Copy

Copy

24
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1

Sample Output 2 Copy

Copy

No
No
No
No
No
No
Yes
Yes
No
No
No
No
Yes
Yes
Yes
No
No
No
Yes
Yes
Yes
No
No
No首先可以直接判断的情况是a < b的情况第一天就不够买的,再就是d < b的情况,每天买b个,而当总量不多于c时才只能补充d,显然补充的量不及买的量,肯定会买完。
再就是c + 1 >= b的情况下,肯定时买不完的,因为一旦量小于等于c就会进行补充,而在量大于c的情况下总是不可能买断的。
对于一般的情况其实就是c < a - bx + dy < b 如果有解的话,就会出现不补充但是总量小于b的情况,这是肯定可以买完的,否则就是永远买不完的。
对于这个不等式,移项得到a - b < bx - dy < a - c,如果bx - dy在这个区间内有解,那么区间内存在一个值能被gcd(b,d)整除,但是这个区间是开区间(a - b,a - c),
具体判断存在的方法是,如果a - b < t < a - c,t % gcd(b,d) == 0,那么就是可以买完的("No"),那么a - c - 1 >= t,显然对于整型来说t / gcd(b,d) - (a - b) / gcd(b,d) > 0,
也就是(a - c - 1) / gcd(b,d) - (a - b) / gcd(b,d) > 0,否则就是买不完的("Yes").
java代码:
import java.util.*;public class Main {
static long gcd(long a,long b) {
if(b == 0)return a;
return gcd(b,a % b);
}
static boolean check(long a,long b,long c,long d) {
if(a < b || d < b)return false;
if(c + 1 >= b)return true;
///如果某天之后 剩下的多于c(不需要增加) 但是却小于b 那么次日肯定不够
///实际上就是c < a - bx + dy < b有解的话就是No
///移项的a - b < bx - dy < a - c
///根据欧几里德扩展定理 就是说(a-b,a-c)之间是否有gcd(b,d)的倍数 即是否有解
long g = gcd(b,d);
return (a - c - 1) / g - (a - b) / g <= 0;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
for(int i = 0;i < t;i ++) {
long a = in.nextLong();
long b = in.nextLong();
long c = in.nextLong();
long d = in.nextLong();
if(check(a,b,c,d))System.out.println("Yes");
else System.out.println("No");
}
}}

c代码:

#include <stdio.h>
long long gcd(long long a,long long b){
return b ? gcd(b,a % b) : a;
}
int check(long long a,long long b,long long c,long long d){
if(a < b || d < b)return ;
if(c + >= b)return ;
long long g = gcd(b,d);
return (a - c - ) / g - (a - b) / g <= ;
}
int main() {
int t;
long long a,b,c,d;
scanf("%d",&t);
while(t --){
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
if(check(a,b,c,d)){
printf("Yes\n");
}
else{
printf("No\n");
}
}
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,564
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,413
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,186
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905