You are on page 1of 2

Bài 1. (3,0 điểm) Tổng của n phép chia. Tên chương trình: TONG.CPP.

Hôm nay Tý học phép chia trong ngôn ngữ lập trình C++. Phép toán / sẽ cho phần
nguyên của phép chia hai số nguyên. Ví dụ: 9 / 2 sẽ cho giá trị là 4. Và bài tập về nhà của
Tý như sau: Cho một số nguyên n, hãy tính tổng: S = n / 1 + n / 2 + … + n / n.
Nhớ lời thầy giáo: “Máy tính giúp cho con người rất nhiều việc và càng ngày con người
càng không thể thiếu chúng, nhưng nhược điểm của máy tính lại là chỉ biết làm việc theo
sự điều khiển của con người mà không hề có tư duy sáng tạo. Trong quá trình tính toán tìm
ra kết quả, con người còn có khả năng phán đoán, dự đoán xu hướng để có thể bỏ qua một
số công đoạn tính toán nhằm đi đến kết quả nhanh hơn. Do đó, con người cần lựa chọn,
xây dựng thuật toán sao cho có thể nâng cao hiệu quả làm việc của máy tính”. Trước khi
lập trình để giải một bài toán Tý thường suy nghĩ cách giải “nâng cao hiệu quả làm việc
của máy tính”, tìm thuật toán có số thao tác thực hiện ít nhất (chương trình chạy nhanh
nhất) có thể.
Bạn hãy cùng Tý giải bài tập trên và cố gắng tìm một thuật toán hiệu quả để giải.
Dữ liệu vào: gồm một số nguyên dương n từ bàn phím (2 ≤ n ≤ 106).
Kết quả: ghi ra màn hình là tổng S tìm được.
Ví dụ:
Dữ liệu vào Kết quả
5 10
Bài 2. (3,0 điểm) Trò chơi đoán số. Tên chương trình: TROCHOI.CPP.
Tý và Tèo thường hay chơi trò chơi gọi là trò “đoán số”. Đầu tiên, Tý nghĩ ra một số
nguyên k nằm trong khoảng từ 1 đến n. Sau đó Tèo nói ra một số và Tý sẽ nói số đó là lớn
hơn, bé hơn hay nói Tèo đã đoán đúng số k mà Tý đã nghĩ.
Để đoán đúng số Tý nghĩ Tèo thực hiện theo các bước sau:
Bước 1: Tèo đặt cho hai biến A, B các giá trị là: A = 1 và B = n.
Bước 2: Tèo gán giá trị cho biến M bằng phần nguyên của trung bình cộng của hai số
A và B ((A + B) DIV 2)
Bước 3: Tèo đọc lên số M.
Bước 4: Nếu Tý nói ‘nhỏ hơn’ thì Tèo đặt lại A = M + 1. Rồi quay lại bước 2.
Bước 5: Nếu Tý nói ‘lớn hơn’ thì Tèo đặt lại B = M – 1. Rồi quay lại bước 2.
Bước 6: Nếu Tý nói ‘đoán đúng rồi’ thì trò chơi kết thúc.
Ví dụ: Với n = 9 và số Tý nghĩ, k = 6.
1. Đầu tiên: A = 1, B = 9. Tèo nói số 5. Tý nói: ‘nhỏ hơn’.
2. Tiếp theo: A = 6, B = 9. Tèo nói số 7. Tý nói: ‘lớn hơn’.
3. Tiếp theo: A = 6, B = 6. Tèo nói số 6. Tý nói: ‘đoán đúng rồi’.
Hãy viết chương trình tính xem Tèo đã nói ra bao nhiêu số trước khi nhận được câu trả
lời ‘đoán đúng rồi’.
Dữ liệu vào: gồm hai số nguyên dương n và k nhận từ bàn phím (1  n  2.109, 1  k 
n).
Kết quả: ghi ra màn hình một số nguyên dương là số lần đoán số của Tèo.
Dữ liệu vào Kết quả
96 3
9645 32 11

bài 3. (3,0 điểm) Tính ngày sản xuất Tên file chương trình: NGAYSX.CPP
Một nhà máy sản xuất được a sản phẩm trong ngày đầu tiên, các ngày tiếp theo cứ
mỗi ngày sau sản xuất hơn ngày trước b sản phẩm. Tuy nhiên trong số k sản phẩm được
nhà máy sản xuất ra có một sản phẩm bị lỗi không thể giao cho khách hàng.
Nhà máy vừa nhận được đơn đặt hàng yêu cầu cung cấp N sản phẩm trong thời gian
sớm nhất.
Yêu cầu: Hãy xác định số ngày ít nhất để nhà máy hoàn thành đủ sản phẩm không bị lỗi
theo đơn đặt hàng đã nhận.
Dữ liệu vào: Từ tệp văn bản NGAYSX.INP gồm một dòng ghi lần lượt bốn số nguyên
dương a, b, k, N cách nhau một dấu cách (a, b ≤ 100, 1< k ≤ 1000, N ≤ 1000000 ).
Kết quả: Ghi ra tệp văn bản NGAYSX.OUT số nguyên T là số ngày ít nhất để sản xuất đủ
sản phẩm theo đơn đặt hàng.
Ví dụ: NGAYSX.INP NGAYSX.OUT
2 1 4 5 3
1 1 3 10 5

You might also like