Số thực
Xem dạng PDFSteve đang thử nghiệm một kiểu lưu trữ số thực đặc biệt cho máy tính nhị phân.
- Thanh ghi (register): lưu được đúng ~n~ chữ số sau dấu chấm ở cơ số ~2~ (phần nguyên không giới hạn).
- Bộ nhớ (memory): lưu được đúng ~k~ chữ số sau dấu chấm ở cơ số ~2~ (phần nguyên không giới hạn), với ~k \le n~.
Với một số thực ~t~, khi cần lưu vào nơi chỉ giữ được ~p~ chữ số sau dấu chấm nhị phân, máy sẽ làm tròn về số biểu diễn được gần nhất trong tập các số dạng ~\dfrac{z}{2^p}~ (với ~z~ nguyên). Nếu có đúng hai số khác nhau cùng gần nhất (tức là đúng giữa), chọn số lớn hơn.
Yêu cầu
Với mỗi số nguyên dương ~v~ trong đoạn ~[1, r]~, thực hiện quy trình sau:
- Nạp ~1~ và ~v~ từ bộ nhớ vào thanh ghi.
- Trên thanh ghi, tính ~a = \dfrac{1}{v}~, rồi lưu lại vào thanh ghi theo quy tắc làm tròn với ~n~ chữ số sau dấu chấm.
- Trên thanh ghi, tính ~b = a \cdot v~, rồi lưu lại vào thanh ghi theo quy tắc làm tròn với ~n~ chữ số sau dấu chấm.
- Ghi ~b~ từ thanh ghi về bộ nhớ, làm tròn theo quy tắc với ~k~ chữ số sau dấu chấm.
Gọi ~v~ là không đạt yêu cầu nếu giá trị cuối cùng lưu trong bộ nhớ khác ~1~.
Hãy tìm tất cả các ~v~ không đạt yêu cầu trong ~[1, r]~.
Dữ liệu
Một dòng gồm ba số nguyên ~n~, ~k~, ~r~.
Kết quả
- Dòng 1: in ra số nguyên ~m~ — số lượng giá trị ~v~ không đạt yêu cầu trong đoạn ~[1, r]~.
- Dòng 2: in ra ~m~ số nguyên — các giá trị ~v~ không đạt yêu cầu (in theo thứ tự tăng dần). Nếu ~m = 0~ thì dòng 2 có thể để trống.
Ví dụ
Ví dụ 1
Input
10 5 60
Output
7
40 50 52 53 55 58 59
Giải thích
Ví dụ 1
Với ~n = 10~, ~k = 5~, trong đoạn ~[1, 60]~ có ~7~ giá trị ~v~ sao cho sau khi thực hiện chuỗi phép toán ~1 / v~ rồi nhân lại với ~v~ kèm các bước làm tròn như mô tả, giá trị cuối cùng ghi về bộ nhớ không còn đúng bằng ~1~; đó là: ~40, 50, 52, 53, 55, 58, 59~.
Ràng buộc và chấm điểm
Ràng buộc
~1 \le k \le n \le 100~, ~1 \le r \le 1000~.
Bình luận