Trường đua
Xem dạng PDF
Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Dạng bài
Trường đua ngựa có ~k~ đường đua. Lần đua này có ~n~ chú ngựa tham gia và cần chia vào ~k~ đường đua sao cho đường đua thứ ~i~ có đúng ~a_i~ chú ngựa. Khi đó:
~a_1 + a_2 + \cdots + a_k = n~, và ~a_i > 0~ với mọi ~i~.
Để hiện đại hóa cách chia nhóm, ban tổ chức yêu cầu thêm điều kiện:
~a_1 \oplus a_2 \oplus \cdots \oplus a_k = 0~,
trong đó ~\oplus~ là phép ~\text{xor}~ (toán tử ^ trong C/C++).

Yêu cầu
Cho ~n~ và ~k~, hãy tìm một dãy ~k~ số nguyên dương ~a_1, a_2, \ldots, a_k~ thỏa mãn đồng thời:
- ~a_1 + a_2 + \cdots + a_k = n~
- ~a_1 \oplus a_2 \oplus \cdots \oplus a_k = 0~
Nếu không tồn tại cách chia phù hợp, in ra ~-1~.
Dữ liệu
Một dòng chứa hai số nguyên ~n~ và ~k~.
Kết quả
- Nếu không tồn tại đáp án, in ra một dòng chứa ~-1~.
- Ngược lại, in ra một dòng gồm ~k~ số nguyên ~a_1, a_2, \ldots, a_k~ mô tả một cách chia thỏa mãn yêu cầu. Nếu có nhiều cách, in ra bất kỳ.
Ví dụ
Ví dụ 1
Input
8 2
Output
4 4
Giải thích
Ví dụ 1
Ta có ~4 + 4 = 8~ và ~4 \oplus 4 = 0~, đồng thời mọi ~a_i > 0~ nên cách chia là hợp lệ.
Ràng buộc và chấm điểm
Ràng buộc
- ~1 \le n, k \le 10^5~
Bình luận