C4-08 · Gửi góp hằng tháng

Xem dạng PDF

Gửi bài giải

Điểm: 1,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
Sách "Lập trình cơ sở với Python"
Dạng bài
Ngôn ngữ cho phép
Python

Đề

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ự:

  1. 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);
  2. 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 :.2f lú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: (**)


Đang tải...