题目内容
给定四个整数 n,k,m,r,其中 0≤r≤m−1 且 m≥1。判断是否可以将 n 表示为 k 个两两不同的正整数之和,且每个数都与 r 在模 m 意义下同余。若可行,输出一组构造;否则输出 NO。
∃a1,…,ak∈Z>0 s.t. i=1∑kai=n, ai≡r(modm), ai 两两不同
输入描述
每个测试文件均包含多组测试数据。第一行输入一个整数 t (1≤t≤104) 表示测试用例数量。
对每个测试用例,输入一行四个整数:
n,k,m,r (0≤n≤1018, 1≤k≤2×105, 1≤m≤109, 0≤r≤m−1)
除此之外,保证单个测试文件的 k 之和不超过 2×105。
输出描述
对于每个测试用例:
- 若不存在表示,输出一行 NO;
- 否则输出一行 YES,并在下一行输出 k 个两两不同的正整数 a1,…,ak(顺序任意,需满足同余与求和的约束)。若存在多个合法答案,输出任意一组即可。
样例1
输入
3
15 3 4 1
18 3 5 3
36 3 6 0
输出
YES
1 5 9
NO
YES
6 12 18
说明
- 对于第一组数据:a={1,5,9},均为正整数,互不相同,且 ai≡1(mod4),并且 ∑ai=15。
- 对于第二组数据:不存在满足条件的表示,输出 NO。
- 对于第三组数据:a={6,12,18},均为正整数,互不相同,且 ai≡0(mod6),并且 ∑ai=36。