设这 k 个数为 a1,a2,…,ak,题目要求满足:
在算术魔法学院,教授布置了一项挑战:给定四个整数 N,K,M,R(其中 0≤R<M),你需要判断是否存在 K 个两两不同的正整数,使得它们的总和恰好为 N,并且每个数除以 M 的余数均为 R。如果存在这样的 K 个数,请构造出一组;否则指出无解。
题目保证:N 不超过 1018,K 不超过 2×105,M 不超过 109,0≤R<M。所有测试数据中 K 的总和不超过 2×105。
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。 接下来 t 行,每行包含四个整数 N,K,M,R,分别表示目标总和、所需数字的个数、模数以及规定的余数。
对于每个测试用例,若无法构造满足条件的数列,输出一行 NO;否则输出一行 YES,并在下一行输出 K 个由空格分隔的正整数,表示构造出的数列。如果有多组合法方案,输出任意一组即可。
输入
1
30 3 5 0
输出
YES
5 10 15
说明
需要 3 个不同的正整数,每个均能被 5 整除,总和为 30。最小可能组合为 5+10+15=30,正好满足要求,故输出 5 10 15。
输入
1
25 3 5 0
输出
NO
说明
需要 3 个被 5 整除的不同正整数。满足条件的最小三个数为 5,10,15,其和为 30>25;无法使总和降低到 25,因此无解。
输入
1
100 4 3 1
输出
YES
1 4 7 88
说明
每个数可表示为 3xi+1(xi≥0 且为整数)。总和 3∑xi+4=100,得 ∑xi=32。为互异,取最小的 xi 序列 0,1,2,3,和为 6;剩余 26 全部加到最大 xi 上,得到 x: 0 1 2 29。对应数字:3×0+1=1,3×1+1=4,3×2+1=7,3×29+1=88。总和 1+4+7+88=100,符合要求。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册