B - Same Parity Summands CodeForces - 1352B

    技术2025-03-07  50

    You are given two positive integers nn (1≤n≤1091≤n≤109) and kk (1≤k≤1001≤k≤100). Represent the number nn as the sum of kk positive integers of the same parity (have the same remainder when divided by 22).In other words, find a1,a2,…,aka1,a2,…,ak such that all ai>0ai>0, n=a1+a2+…+akn=a1+a2+…+ak and either all aiai are even or all aiai are odd at the same time.If such a representation does not exist, then report it. Input The first line contains an integer tt (1≤t≤10001≤t≤1000) — the number of test cases in the input. Next, tt test cases are given, one per line.Each test case is two positive integers nn (1≤n≤1091≤n≤109) and kk (1≤k≤1001≤k≤100). Output For each test case print:YES and the required values aiai, if the answer exists (if there are several answers, print any of them);NO if the answer does not exist.The letters in the words YES and NO can be printed in any case. Example Input8 10 3 100 4 8 7 97 2 8 8 3 10 5 3 1000000000 9 OutputYES 4 2 4 YES 55 5 5 35 NO NO YES 1 1 1 1 1 1 1 1 NO YES 3 1 1 YES 111111110 111111110 111111110 111111110 111111110 111111110 111111110 111111110 111111120

    #include<stdio.h> int main() { long int n, k,x; int t; int i, j; scanf("%d", &t); for ( i = 0; i < t; i++) { scanf("%ld%ld", &n, &k); x = n - (k - 1); if (x>0&&x%2!=0) { printf("YES\n"); for ( j = 0; j < k-1; j++) { printf("1 "); }printf("%ld\n", x); continue; } x = n - 2 * (k - 1); if (x>0&&x%2==0) { printf("YES\n"); for ( j = 0; j < k-1; j++) { printf("2 "); } printf("%ld\n", x); continue; } printf("NO\n"); } return 0; }
    Processed: 0.014, SQL: 9