ICPC Practice Contest 2019 F: Generous Apple Basket

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

Nguồn bài:
Châu Nhật Tăng
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Một buổi sáng đẹp trời, Bờm ra vườn thu hoạch được một giỏ to đầy ắp táo - đúng ~n~ quả. Bờm là người hào phóng: trên đường về, cậu gặp rất nhiều bạn bè và mỗi khi gặp một người bạn, Bờm đều muốn chia cho bạn mình một nửa của cái gì đó. Nhưng Bờm lại hơi kỳ quặc và vụng về trong cách chia:

  • Với một số bạn, Bờm chỉ cho một nửa quả táo (tức là nửa quả, có thể xuất hiện nếu lúc đó giỏ không có số nguyên quả).
  • Với một số bạn khác, Bờm cho một nửa số quả táo hiện có trong giỏ (tức là chia số quả đang có làm đôi, và đưa cho bạn nửa đó).
  • Do Bờm vụng về, cậu chỉ có thể chia một nửa quả (nửa quả riêng lẻ) hoặc chia nửa phần của tổng số quả; nói cách khác, kết quả sau mỗi lần cho có thể là số không nguyên (một nửa hoặc số có phần thập phân ~.5~).
  • Mỗi lần gặp bạn là một bước hành động: Bờm căn cứ vào "luật chia" của lần đó - cho một nửa quả hay cho nửa số quả hiện có - rồi đưa phần tương ứng cho bạn. Sau khi cho, số quả trong giỏ thay đổi (có thể là số nguyên hoặc số có ~.5~).

Trong ngày hôm ấy, Bờm gặp đúng ~k~ người bạn (lần lượt một người rồi tới người khác). Nhưng Bờm không lập kế hoạch trước: mỗi lần gặp bạn, Bờm có thể chọn kiểu chia là "cho ~0.5~ quả" hoặc "cho một nửa số quả đang có". (Bạn có thể hiểu rằng mỗi lần gặp là một quyết định độc lập: Bờm có thể tùy ý áp dụng một trong hai phép chia, bất kể lần trước đã chọn gì.)

Biết rằng lúc bắt đầu buổi sáng Bờm có đúng ~n~ quả táo, và trong cả ngày Bờm sẽ gặp ~k~ người bạn; hãy xác định tập hợp tất cả các giá trị khác nhau của số quả táo có thể còn lại trong giỏ vào cuối ngày, sau khi Bờm đã thực hiện k lần chia theo các lựa chọn tùy ý như mô tả.

Vì Bờm vụng về chỉ biết chia nửa một quả, tất cả số lượng táo xuất hiện trong quá trình này sẽ là các số có thể biểu diễn dưới dạng ~(x.0)~ hoặc ~(x.5)~ với ~(x)~ là số nguyên không âm.

Input

  • Một dòng duy nhất gồm hai số nguyên dương ~n~ và ~k~ ~(1 \le n, k \le 1000)~.

Output

  • Dòng đầu tiên: một số nguyên ~m~ — số lượng giá trị khác nhau có thể có của số táo còn lại sau ~k~ lần gặp bạn.
  • Dòng thứ hai: ~m~ số thực, sắp xếp theo thứ tự tăng dần, mỗi số in với một chữ số sau dấu phẩy, liệt kê tất cả các giá trị khả dĩ.
  • Lưu ý: Các số phải được in dưới dạng thập phân với một chữ số phần thập phân (ví dụ 3.0, 5.5), theo thứ tự tăng dần, và không lặp lại.

Sample Input 1

6 1

Sample Output 1

2
3.0 5.5

Sample Input 2

3 2

Sample Output 2

2
1.0 2.0

Bình luận

Hãy đọc nội quy trước khi bình luận.


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