You are on page 1of 3

Bài tập tìm kiếm

Bài 1. BO

Bo là 1 học sinh lớp 1 rất ham chơi. Hôm nay ở lớp Bo được cô giáo dạy cho phép
tính cộng, và được cô giáo giao cho bài tập về nhà. Bài tập về nhà của Bo như sau: cho
một dãy số có N phần tử và một số K, nhiệm vụ của Bo là phải tìm trong dãy số số cặp
phần tử có tổng bằng K. Vì mải mê chơi game nên sắp đến giờ đi học mà Bo vẫn chưa
làm bài tập cô giáo giao cho. Vì vậy, Bo liền lên facebook nhờ các anh chuyên tin trường
Huỳnh Mẫn Đạt giúp đỡ.

Yêu cầu: Hãy viết chương trình giải bài tập giúp Bo.

Dữ liệu vào: Từ file BO.INP:

- Dòng đầu chứa 2 số N và K (K có giá trị tuyệt đối không quá 100).

- Dòng 2 chứa n số mô tả dãy số.

Dữ liệu ra: Ghi kết quả ra file BO.OUT:

- 1 dòng duy nhất chứa kết kết quả bài toán.

Ví dụ:

BO.INP BO.OUT

56 2

12345

- 70% số test có N <= 103.

- 30% số test có N <= 105.

Bài 2: BI

Trong lớp học của Bi có n bạn học sinh. Hôm nay nhân dịp sinh nhật của Bi cả lớp
cùng nhau chơi một trò chơi tương đối lớn. Cô giáo đưa ra cho cả lớp 1 dãy số A có N số
và đặt ra Q câu hỏi, mỗi câu hỏi có dạng x y, và cô giáo gọi ngẫu nhiên một bạn học sinh
trả lời, bạn học sinh được gọi cần phải cho biết tổng của các số trong dãy từ vị trí x đến vị
trí y, nếu ai trả lời đúng sẽ được một cục kẹo. Vì rất dở tính toán nhưng lại rất thích ăn
kẹo nên Bi đã nhờ các anh đội tuyển tin trường Huỳnh Mẫn Đạt cho đáp án từng câu hỏi
của cô giáo.

Yêu cầu: Hãy tìm đáp án của mỗi câu hỏi giúp Bi.

Dữ liệu vào: Từ file BI.INP:

- Dòng đầu là 2 số N và Q.

- Dòng 2 chứa N số nguyên thể hiện dãy số A. (-100 <= Ai <= 100).

- Q dòng tiếp theo mỗi dòng chứa 2 số x y.

Dữ liệu ra: Ghi ra file BI.OUT:

- Q dòng, dòng thứ i là câu trả lời của câu hỏi thứ i.

Ví dụ:

BI.INP BI.OUT

53 3

12345 7

12 14

34

25

- 70% số test có N, Q <= 103.

- 30% số test có N, Q <= 105.

Gợi ý:
Để tính tổng của các số từ vị trí x đến vị trí y, ta sử dụng công thức:
sum = prefixSum[y] - prefixSum[x-1]
Trong đó, prefixSum[y] là tổng tích lũy của các số từ vị trí đầu đến vị trí y, và
prefixSum[x-1] là tổng tích lũy của các số từ vị trí đầu đến vị trí x-1.
Khi ta trừ prefixSum[x-1] khỏi prefixSum[y], ta sẽ có tổng của các số từ vị trí x đến vị trí
y.

You might also like