
夕阳一线天。

翻译
给你两个正整数 n 和 k。n 是 k 个正整数的和,并且要求 k 个整数同是奇数或者偶数。
输入格式
第一行,输入整数 t,表示测试用例组数。
每行测试用例输入两个整数,n 和 k 用空格分隔。
输出格式
如果可以构造出答案,则第一行输出 YES,第二行输出答案,并且用空格分隔。
如果不能构造出答案,则输出 NO。
如果有多个答案,输出任意一种。
分析
如果 k - 1 个 1 和一个奇数可以组成 n,则就用这种方式构造答案,如果不行,则用 k - 1 个 2 和一个偶数组成答案,如果依旧不行,则输出 NO。
代码逻辑有些不同,先判断应该用 1 还是 2,如果 (n - k + 1) 是偶数则必须用 2,否则可以用1。然后,判断n是奇数,k是偶数的情况,则不能构造出答案。最后,判断剩余数字能否填充,如果已经大于了 n,则不能构造。
好像说的有些细碎。
代码(PyPy3)

# https://codeforces.com/problemset/problem/1352/B
import sys
# sys.stdin = open(r"./file/input.txt", 'r')
# sys.stdout = open(r"./file/output.txt", 'w')
t = int(input())
for _ in range(t):
arr = input().split(" ")
n = int(arr[0])
k = int(arr[1])
digit = 1 if (n - k + 1) % 2 == 1 else 2
if n % 2 == 1 and k % 2 == 0:
print("NO")
elif n < k * digit:
print("NO")
else:
print("YES")
result = [digit] * (k - 1)
result.append(n - (k - 1) * digit)
print(" ".join(str(i) for i in result))
更多代码尽在 https://github.com/Tconan99/Codeforces
by 费城的二鹏 2020.05.11 长春
网友评论