Giải Tin học 10 Bài 17: Thực hành lập trình giải bài toán trên máy tính
Bài 1. Cứu nạn
Bài toán Cứu nạn
Một tàu đánh cá có ngư dân bị tai nạn cần cấp cứu đã gọi điện về cơ sở y tế ở đảo gần nhất cách đó d (hải lí). Để người bị tai nạn được sơ cứu sớm hơn, tàu đánh cá đổi hướng, đi thẳng về phía đảo với vận tóc v1 (hải lí/giờ), đồng thời từ đảo người ta cũng cho một tàu cứu nạn có thiết bị y tế sơ cứu đi theo đường đó tới hướng tàu cá với vận tốc 2 (hải lí/giờ). Em hãy xác định sau bao lâu hai tàu gặp nhau, khi biết dữ liệu d, v1, v2.
Trả lời:
Vì mỗi giờ, khoảng cách giữa hai tàu giảm đi (v1 + v2) hải lí, vì vậy để hai tàu gặp nhau sẽ cần giờ.
- Nhập dữ liệu cho v1, v2 và d
- Khoảng thời gian cần tính là (giờ)
Bài 2. Dự trữ vacxin
Để sẵn sàng triển khai tiêm vacxin cho địa phương có nguy cơ bùng dịch cao, người ta cần dự trữ không ít hơn n liều vacxin. Hiện nay trong kho đang có m liều vacxin. Trong nước có hai cơ sở A và B sản xuất vacxin. Nếu làm việc hết công suất cơ sở A mỗi ngày sản xuất được pa liều, còn cơ sở B sản xuất được pb liều. Em hãy xác định sớm nhất sau bao nhiêu ngày sẽ có đủ n liều vacxin.
Dữ liệu: Đưa vào từ thiết vị vào chuẩn của hệ thống, dòng đầu tiên chứa 2 số nguyên n và m (0 ≤ n, m ≤108), dòng thứ hai chứa 2 số nguyên pa và pb (0 ≤ pa, pb ≤105).
Kết quả: Đưa ra từ thiết bị ra chuẩn của hệ thống một số nguyên là số ngày sớm nhất có đủ vacxin dự trữ theo kế hoạch.
Trả lời:
- Sau mỗi ngày thì số vacxin đã có tăng lên (pa + pb) liều, điều này lặp lại cho đến khi số liều vacxin đã có không nhỏ hơn n.
- Thuật toán:
+ Nhập dữ liệu n, m, pa, pb
+ Khởi tạo giá trị cho biến t = 0
+ Sử dụng vòng lặp while cho biến t chạy cho đến khi m + (pa + pb) * n >=n thì dừng
- Chương trình:
n = int(input("Nhập số liều vacxin cần dự trữ "))
m = int(input("Nhập số liều vacxin đang có trong kho "))
pa = int(input("nhập số liều cơ sở A sản xuất được mỗi ngày "))
pb = int(input("nhập số liều cơ sở B sản xuất được mỗi ngày "))
t = 0
while m + (pa + pb) * t < n:
t = t + 1
print("Số ngày cần thiết là ", t)
Vận dụng (trang 118)
Giáo viên dự định ghi một số đĩa CD làm phần thưởng cho học sinh. Đĩa CD mà giáo viên dùng chỉ có thể ghi tối đa W (đơn vị Kb). Vì tất cả các bức ảnh đều rất đẹp và thú vị nên giáo viên muốn lựa chọn các bức ảnh để ghi vào đĩa CD với tiêu chí càng nhiều bức ảnh được ghi vào đĩa CD càng tốt. Giáo viên băn khoăn và muốn biết số lượng tối đa các bức ảnh có thể ghi vào đĩa CD là bao nhiêu.
Em hãy chỉ ra kết quả từng bước thực hiện để có được chương trình nhận dữ liệu vào là các số nguyên W, d1, d2, …, dn và trả về số lượng tối đa các bức ảnh có thể ghi vào đĩa CD.
Trả lời:
W = int(input("Nhập dung lượng tối đa đĩa có thể lưu trữ"))
print("Nhập dung lượng của từng bức tranh")
ds = [int(i) for i in input().split()]
ds.sort()
t = 0
s = 0
for i in range(0, len(ds)):
s = s + ds[i]
if s <= W:
t = t + 1
else:
break
print("Số lượng tối đa các bức ảnh có thể ghi vào đĩa là: ", t)
Xem thêm các bài giải SGK Tin học lớp 10 Cánh diều hay, chi tiết khác:
Bài 15: Thực hành với kiểu dữ liệu danh sách
Bài 16: Kiểm thử và gỡ lỗi chương trình
Bài 18: Lập trình giải quyết bài toán trên máy tính
Bài 1: Nhóm nghề thiết kế và lập trình
Bài 2: Dự án nhỏ: Tìm hiểu về lập trình web, lập trình trò chơi và lập trình cho thiết bị di động