C4-08 · Gửi góp hằng tháng
Xem dạng PDFĐề
Một sinh viên mở sổ tiết kiệm với số dư ban đầu bằng 0 và gửi góp hằng tháng. Cuối mỗi tháng, theo đúng thứ tự:
- ngân hàng cộng lãi 0,5% tính trên số dư cũ (số dư trước khi gửi tháng này);
- sinh viên gửi thêm 5 (triệu đồng).
Cho mục tiêu M (triệu đồng). Tìm số tháng ít nhất để số dư, xét sau khi gửi, đạt ít nhất M; in số tháng đó và số dư lúc ấy.
Dữ liệu vào
Một dòng chứa số thực M.
Kết quả
Một dòng gồm số nguyên (số tháng) và số dư lúc đạt mục tiêu viết với đúng 2 chữ số thập phân (:.2f), cách nhau một dấu cách.
Ràng buộc
- 0 < M ≤ 100 000; M viết dạng số nguyên (
30) hoặc có 1–2 chữ số thập phân (30.38). - So sánh số dư thật (chưa làm tròn) với M; chỉ làm tròn 2 chữ số khi in.
Ví dụ
Dữ liệu vào:
30
Kết quả:
6 30.38
Giải thích ví dụ
Gọi s là số dư; mỗi tháng s = s * 1.005 + 5 (lãi trên số dư cũ trước, rồi mới gửi):
| Tháng | Lãi trên số dư cũ | Số dư sau khi gửi | Đạt 30? |
|---|---|---|---|
| 1 | 0 × 0,005 = 0 | 5 | chưa |
| 2 | 5 × 0,005 = 0,025 | 10,025 | chưa |
| 3 | 0,050125 | 15,075125 | chưa |
| 4 | 0,075376 | 20,150501 | chưa |
| 5 | 0,100753 | 25,251253 | chưa |
| 6 | 0,126256 | 30,377509 | đạt |
Sau 6 tháng số dư khoảng 30,3775 ≥ 30, in 6 30.38.
Chú ý: với M = 30.38 thì tháng 6 chưa đạt (30,3775… < 30,38, dù khi in làm tròn thành 30.38), phải sang tháng 7.
Ghi chú
- Đọc M bằng
float(input())vì M có thể có phần thập phân. - "Đạt" nghĩa là số dư ≥ M (đúng bằng M cũng là đạt).
- Đừng làm tròn số dư sau mỗi tháng: chỉ định dạng
:.2flúc in.
Nguồn trong sách: Bài C4-08, mục 4.10, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long · Mức: (**)