题目描述
时间限制:1 秒
内存限制:256 兆字节
给定四个整数 n,m,p,q,判断是否存在一个整数数组 a1,a2,…,an(元素可以为负数),使其满足以下条件:
a1+a2+⋯+an=m
$$a_i + a_{i+1} + \cdots + a_{i+p-1} = q, \quad \text{对所有 } 1 \leq i \leq n - p + 1
$$
输入格式
每个测试点包含多个测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例只有一行,包含四个整数 n,m,p,q(1≤p≤n≤100,1≤q,m≤100)—— 分别表示数组长度、数组元素总和、子段长度和子段总和。
输出格式
对于每个测试用例,如果存在满足条件的数组,输出 "YES",否则输出 "NO"。
你可以以任意大小写输出 "YES" 和 "NO"(例如,"YES"、"yes"、"Yes" 都会被认为是正确的)。
示例
输入
5
3 2 2 1
1 1 1 1
5 4 2 3
10 7 5 2
4 4 1 3
输出
YES
YES
YES
NO
NO
说明
-
第一个测试用例:n=3,m=2,p=2,q=1
一个满足条件的数组是 [1,0,1]。
验证:
a1+a2+a3=1+0+1=2=m
a1+a2=1+0=1=q
a2+a3=0+1=1=q
-
第二个测试用例:n=1,m=1,p=1,q=1
唯一的数组是 [1],显然满足条件。
-
第三个测试用例:n=5,m=4,p=2,q=3
一个满足条件的数组是 [−2,5,−2,5,−2]。
验证:
−2+5+(−2)+5+(−2)=4=m
每连续 2 个元素之和:
$$-2 + 5 = 3 = q,\quad 5 + (-2) = 3 = q,\quad -2 + 5 = 3 = q,\quad 5 + (-2) = 3 = q
$$
-
第四个测试用例:n=10,m=7,p=5,q=2
可以证明不存在满足条件的数组。
-
第五个测试用例:n=4,m=4,p=1,q=3
可以证明不存在满足条件的数组(因为 p=1 时每个元素都等于 q=3,总和会是 4×3=12,不等于 m=4)。