1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tổng hợp đề thi HSG môn Tin học THPT có đáp án

33 31 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tổng hợp đề thi HSG môn Tin học THPT có đáp án
Chuyên ngành Tin học
Định dạng
Số trang 33
Dung lượng 6,51 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài 2: Tách chuỗi đối xứng Chuỗi đối xứng palindrome là chuỗi mà nếu ta đọc từ trái sang phải hay từ phải sang trái thìđều giống nhau.. Một chuỗi S bất kỳ luôn có thể ghép được từ các c

Trang 1

1

Chú ý: Thí sinh thay * trong tên chương trình là PAS hoặc CPP tùy theo ngôn ngữ lập trình

mà thí sinh sử dụng là PASCAL hoặc C++.

Bài 1: Đếm số 0 bên phải

Cho một số nguyên n Hãy đếm xem trong kết quả của số n! (n giai thừa) có bao nhiêu chữ số 0liên tiếp tính từ hàng đơn vị (hay bao nhiêu số 0 liên tiếp bên phải)

Bài 2: Tách chuỗi đối xứng

Chuỗi đối xứng (palindrome) là chuỗi mà nếu ta đọc từ trái sang phải hay từ phải sang trái thìđều giống nhau Ví dụ chuỗi 'abcba' là chuỗi đối xứng Một ký tự duy nhất cũng được gọi làchuỗi đối xứng

Một chuỗi S bất kỳ luôn có thể ghép được từ các chuỗi đối xứng Ví dụ chuỗi 'bobseesanna'

có một số cách ghép như sau:

1) 'b' + 'o' + 'b' + 'sees' + 'a' + 'n' + 'n' + 'a'

2) 'bob' + 'sees' + 'anna'

3) 'bob' + 's' + 'ee' + 's' + 'anna'

Tổng quát S = P1 + P2 + + Pk với P1, P2, , Pk là các chuỗi đối xứng Bạn hãy tìm cách biểudiễn S sao cho k là bé nhất Trong ví dụ trên, k = 3 (cách ghép số 2)

Dữ liệu vào:

- Dòng thứ nhất là số nguyên n (1 ≤ n ≤ 2.000) biểu thị chiều dài chuỗi S

- Dòng thứ hai là chuỗi S gồm n ký tự là các chữ cái la tinh thường từ a đến z

Dữ liệu ra:

- Dòng thứ nhất là số nguyên k

- Trong k dòng tiếp theo, tại dòng thứ i là chuỗi đối xứng Pi Nếu có nhiều cách biểu diễn, chỉcần in ra một cách bất kỳ

Trang 2

Ví dụ

11bobseesanna

3bobseesanna

Bài 3: Máy rút tiền ATM

Vinh làm việc cho một công ty sản xuất máy ATM Chức năng cơ bản của một máy ATM làrút tiền mặt Khi một khách hàng muốn rút M đồng, máy ATM sẽ nhả ra m tờ tiền mà có tổng là

W đồng Trong máy ATM thế hệ tiếp theo, Vinh đang xây dựng một thuật toán để tìm được W(số lượng các tờ tiền) là ít nhất

Giả sử máy ATM có N loại tiền: 1, 2, 3, , n; mỗi loại có 1 mệnh giá tương ứng là v[1] < v[2]

< v[3] < < v[n] Cho biết cách thanh toán cần ít số lượng tờ tiền nhất cho số tiền cần thanh toán

là W Bạn hãy giúp Vinh viết chương trình thực hiện yêu cầu trên Biết rằng số tiền trong câyATM lớn hơn số tiền cần rút

Dữ liệu vào: Gồm 2 dòng

Dòng 1: Chứa số nguyên dương N và N số nguyên là các loại tiền đơn vị tính bằng đồng v[1]…v[N]

Dòng 2: Chứa M là số tiền khách hàng muốn rút tính bằng đồng

Dữ liệu xuất: Gồm nhiều dòng

Dòng 1: Ghi số W là số lượng tờ tiền ít nhất

Dòng 2 trở đi: Gồm 2 số W1 và W2 trong đó W1 là số tờ tiền tương ứng mệnh giá W2

Nếu không có cách rút tiền ghi ra file dòng chữ “nhap lai so tien”

Ví dụ

4

10 20 50 100450

5

4 100

1 50

Trang 3

Bài 1: Đếm số 0 bên phải

Trang 4

Bài 3: Rút tiền ATM

*Đặt lại bài toán: Có N loại tiền: 1, 2, 3, , n; mỗi loại có 1 mệnh giá tương ứng là v[1] < v[2] <

v[3] < < v[n] Cho biết cách thanh toán cần ít số lượng tờ tiền nhất cho số tiền cần thanh toán là M

1) F[i, j] = F[i-1, j]; Không dùng được loại tiền i để thanh toán số tiền j.

2) F[i, j] = 1 + F[i, j-v[i]]; Có dùng loại tiền i để thanh toán số tiền j (đk: j >= v[i]).

F[i, j] là cách trả cần ít tờ tiền nhất, cho nên sẽ là min trong 2 giá trị thu được ở trên

Trang 5

*Cơ sở quy hoạch động:

F[0, j] = vô cùng; (1<= j <= M) (quy định: nếu dùng các tờ tiền loại 0, có mệnh giá v[0] = 0 thì

sẽ cần vô cùng tờ tiền mới thanh toán được cho số tiền j)

F[i, 0] = 0; (1<=i<=N) không có cách trả cho số tiền = 0

{Quy Hoach Dong, Rut tien}

Program OptimizeCurrency;

Const NMax = 500; MMax = 65535;

Var currency : Array[1 NMax] of Word;

value : Array[1 NMax] of Word;

F : Array[0 NMax, 0 MMax] of Word;

If (j >= value[i]) And (F[i, j] >= 1 + F[i, j - value[i]]) Then

F[i, j] := 1 + F[i, j - value[i]];

Trang 6

{Co dung loai tien i}

Writeln('To tien thu ', c , ' - loai: ', currency[i]);

Ngày đăng: 08/04/2022, 13:32

TỪ KHÓA LIÊN QUAN

w