You are on page 1of 2

Môn: TIN HỌC

Thời gian: 180 phút ( không kể thời gian giao đề )


Ngày thi:
(Đề thi gồm có 03 trang, 03 bài)

TỔNG QUAN NGÀY THI THỨ NHẤT


Tên bài File chương trình File dữ liệu vào File dữ liệu ra
Bài 1 Số may mắn LUCKYNUM.* LUCKYNUM.INP LUCKYNUM.OUT
Bài 2 Biến đổi số REPNUM.* REPNUM.INP REPNUM.OUT
Bài 3 Tuyển nhân viên STAFF.* STAFF.INP STAFF.OUT
Dấu * được thay thế bởi PAS hoặc CPP của ngôn ngữ lập trình được sử dụng tương ứng là Pascal
hoặc C++.
Hãy lập trình giải các bài toán sau:
Bài 1. Số may mắn (6 điểm)
Cho một số nguyên N và N số nguyên A1 … AN (1 ≤ Ai ≤ 9) Một số nguyên x gọi là may mắn, nếu trong hệ
thập phân các chữ số của x thuộc vào tập S={A1, A2 … AN}. Cho một số nguyên dương k , yêu cầu tính số
các số may mắn nằm trong đoạn từ 1 tới k.
Dữ liệu vào: Từ file LUCKYNUM.INP:
Dòng 1: Gồm hai số nguyên N và k (1 ≤ N ≤ 5)
Dòng 2: Gồm N số nguyên A1 … AN.

Dữ liệu ra: Ghi ra file LUCKYNUM.OUT, một số nguyên duy nhất là kết quả bài toán
LUCKYNUM.INP LUCKYNUM.OUT
3 100 12
123

Ràng buộc:
Có 40% số test ứng với 40% số điểm có 1 ≤ k ≤ 10
6

Có 60% số điểm còn lại ứng với 60% số điểm có 1 ≤ k ≤ 109

Bài 2. Biến đổi số (7 điểm)


Cho mảng A có N phần tử được đánh số A1 … AN (các phần tử mảng A đôi một khác nhau) và một số
nguyên dương k. Bạn cần thực hiện không quá k bước để biến đổi số A1 thành số AN. Số Ai có thể biến đổi
thành Aj hoặc ngược lại Aj thành Ai khi và chỉ khi: ước chung lớn nhất Ai và Aj bằng 1.
Yêu cầu: Cho dữ liệu về mảng A có N phần tử và một số nguyên dương k, yêu cầu tính số cách biến đổi A1
thành An mà không quá k bước (các số trong quá trình biến đổi có thể lặp lại), do kết quả rất lớn nên chỉ cần
in ra phần dư cho một số nguyên M cho trước.
Dữ liệu vào: Từ file REPNUM.INP:
Dòng đầu tiên: Số nguyên T, số test đề bài (1 ≤ T ≤ 10).
T bộ test tiếp theo, mỗi bộ test có dạng:
Dòng 1: Gồm ba số nguyên N, k và M
Dòng 2: Gồm N số nguyên A1 … AN (2 ≤ Ai ≤ 109)
Dữ liệu ra: Ghi ra file REPNUM.OUT gồm T dòng, tương ứng là kết quả của T bộ test.

REPNUM.INP REPNUM.OUT
1 2
4 2 1000
2435

Ràng buộc:
Có 30% số test ứng với 30% số điểm có 1 ≤ N ≤ 20, 1 ≤ k ≤ 104, 1 ≤ M ≤ 109.
Có 30% số test tiếp theo ứng với 30% số điểm có 1 ≤ N ≤ 20, 1 ≤ k ≤ 104, 1 ≤ M ≤ 1018.
Có 40% số test còn lại ứng với 40% số điểm có 1 ≤ N ≤ 20, 1 ≤ k ≤ 1012, 1 ≤ M ≤ 1018.

Bài 3.Tuyển nhân viên


Công ty nơi Jerry làm đang có kế hoạch tuyển thêm nhân sự. Có tất cả N ứng viên xin đăng kí vào làm công
ty, người thứ i có kinh nghiệm là Ai. Không chỉ có vậy, có thể có một vài người đã cùng làm việc với nhau
trước đó ở cùng một cung ty, nên nếu như cả hai người cùng được nhận thì mức độ kinh nghiệm của cả hai
đều tăng thêm. Theo thông kê của Jerry, có tất cả M mối quan hệ như vậy, nếu ui được nhận cùng vi thì kinh
nghiệm sẽ tăng wi cho mỗi người. Công ty muốn tuyển thêm càng nhiều nhân viên càng tốt, nhưng phải đảm
bảo những người được chọn đều có kinh nghiệm lớn hơn T, với T là chỉ tiêu mà công ty đưa ra. Việc tuyển
nhân sự khiến cho Jerry vô cùng đau đầu, do số người nộp đơn đăng kí là quá lớn, và công ty không chỉ đưa
ra một số nguyên T mà tới những k số T1…Tk. Hãy giúp anh ấy tính số người được tuyển ứng với k số T mà
công ty đã đưa ra.

Dữ liệu vào: Vào từ file STAFF.INP:


Dòng 1: Gồm 3 số nguyên N,M và k ,tương ứng là số người nộp đơn đăng kí vào công ty, số thông kê của
Jerry và các lượng chỉ tiêu công ty đưa ra. ( 1 ≤ k ≤ 5, 1 ≤ M ≤ 10 ).
5

Dòng 2: Gồm N số nguyên A1 … AN.


M dòng tiếp theo, mỗi dòng gồm 3 số nguyên ui, vi và wi là các thông kê của Jerry. (ui khác vi, 1 ≤ wi ≤ 10 )
9

Dòng tiếp theo: Gồm k số nguyên T1…Tk là các chỉ tiêu đưa ra của công ty. (1 ≤ Ti ≤ 10 ).
12

Dữ liệu ra: Ghi ra file văn bản STAFF.OUT, gồm k số nguyên tương ứng là số người được tuyển nhiều
nhất.

STAFF.INP STAFF.OUT
522 55
12345
122
231
12

Ràng buộc:
Có 30% số test tương ứng với 30% số điểm có: 1 ≤ N ≤ 20
Có 30% số test tiếp theo ứng với 30% số điểm có: 1 ≤ N ≤ 1000
Có 40% số test còn lại ứng với 40% số điểm có: 1 ≤ N ≤ 105

You might also like