Lũy thừa của hai

Đề bài

Mô tả

Một số nguyên dương x được gọi là lũy thừa của hai nếu x=2y với y là một số nguyên không âm. Như vậy các lũy thừa của hai là 1,2,4,8,16,

Cho hai số nguyên dương nk. Hãy biểu diễn n thành tổng của đúng k lũy thừa của hai. Các lũy thừa này không nhất thiết phải khác nhau.

Dữ liệu vào

Một dòng duy nhất chứa hai số nguyên nk.

Dữ liệu ra

Nếu không thể biểu diễn n thành tổng của đúng k lũy thừa của hai, in ra NO.

Ngược lại, in ra YES trên dòng đầu tiên, sau đó in ra k số nguyên dương b1,b2,,bk sao cho mỗi bi là một lũy thừa của hai và i=1kbi=n. Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 1n109
  • 1k2·105

Ví dụ

Input Output Giải thích
8 1 YES
8
Bản thân 8=23 đã là một lũy thừa của hai.
5 1 NO 5 không phải lũy thừa của hai nên không thể viết thành đúng 1 số hạng.
9 4 YES
1 2 2 4
1+2+2+4=9. Một đáp án hợp lệ khác là 1 4 2 2, thứ tự các số hạng không quan trọng.
3 7 NO Tổng của 7 số hạng, mỗi số hạng ít nhất bằng 1, luôn lớn hơn 3.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0