You are on page 1of 5

Bài 1.

Tìm số thứ N – FindN


Cho một dãy số vô hạn các số nguyên được sắp xếp tăng dần, mỗi số chỉ chứa các chữ số 4 và 7.
Yêu cầu: Hãy tìm số thứ N trong dãy. Sáu số đầu tiên trong dãy gồm: 4, 7, 44, 47, 74, 77. Dãy số được
đánh thứ tự từ 1.
Dữ liệu: Đọc vào từ file FindN.inp gồm:
− Dòng đầu tiên chứa số nguyên T – cho bộ dữ liệu cần kiểm tra
− T dòng sau mỗi dòng chứa 1 số nguyên N.
Kết quả: Ghi ra file FindN.out:
− Ứng với mỗi bộ dữ liệu đầu vào, in ra số thứ N trong dãy đã cho.
Ví dụ:
FindN.inp FindN.out
5 7
2 44
3 74
5 77
6 744
11
Bài 2. Trò chơi đu quay
Trong khu vui chơi Disneyland có 1 vòng đu quay lớn. Hiện giờ đang có n bạn trẻ muốn chơi đu quay,
Trưởng nhóm muốn tìm cabin phù hợp cho cả nhóm biết mỗi chiếc cabin có thể chứa tối đa 2 bạn nhỏ và
tổng trọng lượng của người chơi không vượt quá trọng lượng tải X của cabin. Trưởng nhóm sẽ nhớ cân
nặng của tất cả các bạn trong nhóm.
Yêu cầu: Tìm số lượng cabin tối thiểu cho các bạn trẻ.
Dữ liệu: Nhập vào từ file Ferris.inp gồm:
- Dòng đầu tiên chứa hai số nguyên n và x: số lượng các bạn trẻ và trọng lượng tối đa cho phép của
Cabin.
- Dòng tiếp theo chứa n số nguyên p1,p2, … ,pn: trọng lượng của mỗi bạn.
Kết quả: Ghi ra file Ferris.out:
- Một số nguyên: số lượng tối thiểu cabin cần.
Ràng buộc:
1 ≤ 𝑛 ≤ 2 ⋅ 105
1 ≤ 𝑥 ≤ 109
1 ≤ 𝑝𝑖 ≤ 𝑥
Ví dụ:
FERRIS.INP FERRIS.OUT
4 10 3
7239

Bài 3. Ước chuỗi - DivStr


Cho 1 chuỗi S (tối đa 100 ký tự) chỉ gồm các chữ cái in thường, chuỗi X được gọi là ước của chuỗi S nếu
chuỗi X có độ dài ngắn nhất và khi ghép một số lần X ta được chuỗi S.
Ví dụ:
• S = “ababababab” thì ước của nó là X = “ab”
• S = “aaaaaaa” thì ước của nó là X = “a”
• S = “abc” thì ước của nó là X = “abc”
Yêu cầu: Cho trước 1 chuỗi S nhập từ bàn phím, hãy tìm chuỗi X là ước của chuỗi S.
Dữ liệu: đọc vào từ file DivStr.inp:
− Một dòng duy nhất chứa chuỗi S.
Kết quả: Ghi ra file DivStr.out
− Chuỗi X là ước của chuỗi S.
Ví dụ:
DIVSTR.INP DIVSTR.OUT
Abababab ab
Abc abc

Bài 4. Chuỗi Fibonacci


Chuỗi Fibonacci được định nghĩa như sau:
𝐹1 = 𝑥
{ 𝐹2 = 𝑦
𝐹𝑖 = 𝐹𝑖−1 + 𝐹𝑖−2
Trong đó x, y là hai ký tự được cho trước, phép toán cộng được hiểu là phép toán ghép chuỗi.
Ví dụ: x= ‘A’ và y =’B’ thì khi đó ta có dãy gồm 6 chuỗi Fibonacci như sau:
i Chuỗi Fibonacci thứ i
1 F1 = ‘A’
2 F2 = ‘B’
3 F3 = ‘BA’
4 F4 = ‘BAB’
5 F5 = ‘BABBA’
6 F6 = ‘BABBABAB’
Yêu cầu: Cho biết 2 ký tự x, y và số nguyên dương n. Hãy in ra chuỗi Fibonacci thứ n.
Dữ liệu: Đọc vào từ file FiboStr.inp gồm:
− Dòng đầu tiên là hai ký tự x và y cách nhau 1 dấu cách.
− Dòng tiếp theo chứa số nguyên dương n.
Kết quả: Ghi ra file FiboStr.out
− Ghi ra chuỗi Fibonacci thứ n.
Ví dụ:
FiboStr.inp FiboStr.out
AB BABBABAB
6
Bài 5. Nhà sách – BookStore.???
Nhà sách Hoàng Cương đang có bán N loại sách khác nhau. Mỗi quyển sách đều có ghi rõ giá bán và số
trang tương ứng. Nam hiện có 1 khoản tiền X và Nam cho rằng sách có nhiều trang thì sẽ có giá trị hơn. Vì
thế cậu đang tính toán để có thể mua sách sao cho số tiền không vượt quá khả năng chi trả mà vẫn được số
sách có tổng số trang nhiều nhất có thể.
Yêu cầu: Hãy tính toán giúp Nam biết rằng mỗi cuốn sách, Nam sẽ chỉ mua 1 quyển.
Dữ liệu: Nhập vào từ file BOOKSTORE.INP gồm:
− Dòng đầu tiên chứa hai số nguyên n và x: tương ứng với số lượng sách và khoản tiền của Nam.
− Dòng tiếp theo chứa n số nguyên ℎ1 , ℎ2 , … , ℎ𝑛 : giá của mỗi cuốn sách.
− Dòng cuối cùng chứa n số nguyên 𝑠1 , 𝑠2 , … , 𝑠𝑛 : số trang của mỗi cuốn sách.
Kết quả: Ghi ra file BOOKSTORE.OUT:
− Một số nguyên là tổng số trang tối đa của các quyển sách Nam sẽ mua.
Ràng buộc

• 1 ≤ 𝑥 ≤ 105
• 1 ≤ ℎ𝑖 , 𝑠𝑖 ≤ 1000
Ví dụ:
BOOKSTORE.INP BOOKSTORE.OUT
4 10 13
4853
5 12 8 1
Giải thích: Nam có thể mua quyển sách số 1 và số 3 với giá tiền là: 4+5=9 và tổng số trang là: 5+8=13.
tổng số trang là: 5+8=13.
Bài 6. Mật khẩu – Password
Một chuỗi mật khẩu được gọi là “an toàn” nếu chuỗi đó thỏa mãn:
• Có độ dài ít nhất bằng 6.
• Chứa ít nhất một chữ cái in hoa (‘A’…’Z’).
• Chứa ít nhất một chữ cái thường (‘a’…’z’).
• Chứa ít nhất một chữ số (‘0’…’9’).
Ví dụ: ‘a1B2C3’, ’tinHoc6’ là các chuỗi mật khẩu “an toàn”, còn ‘a1B2C’, ‘a1b2c3’, ‘A1B2C3’, ‘tinHoc’
là các mật khẩu không “an toàn”
Một lần, Nam nhìn thấy 1 chuỗi ký tự S, chỉ gồm các loại ký tự: chữ cái in hoa, chữ cái thường, chữ số.
Nam muốn thử khả năng đoán nhận mật khẩu bằng cách đếm xem có bao nhiêu cặp chỉ số (i, j) thỏa mãn
điều kiện:
• 1 ≤ 𝑖 ≤ 𝑗 ≤ |𝑆|(với |𝑆|𝑙à độ 𝑑à𝑖 𝑐ủ𝑎 𝑐ℎ𝑢ỗ𝑖 𝑆)
• Chuỗi con gồm các ký tự liên tiếp trong S từ I đến j là mật khẩu “an toàn”
Yêu cầu: Cho chuỗi S, tính số lượng cặp (I, j) thỏa mãn điều kiện trên.
Dữ liệu: Đọc vào từ file Password.inp:
− Một dòng chứa chuỗi ký tự S.
Kết quả: Ghi ra file Password.out:
− In ra số nguyên là số lượng cặp chỉ số (I,j) thỏa mãn đề bài.
Ràng buộc:
• 50% số test đầu tiên chuỗi S có độ dài không quá 50.
• 25% số test đầu tiên chuỗi S có độ dài không quá 300.
• 25% số test đầu tiên chuỗi S có độ dài không quá 1000.
Ví dụ:
Password.inp Password.out
abc3456789PQ 6
Abc123 0
Giải thích: có 6 mật khẩu an toàn là: ‘c3456789P’, ‘c3456789PQ’, ‘bc3456789P’, ‘bc3456789PQ’,
‘abc3456789P’, ‘abc3456789PQ’
Bài 7. Mảng đại diện – Represent Array
Cho 1 mảng gồm N phần từ và giá trị các phần tử trong mảng nằm trong khoảng [1..m], giá trị giữa 2
phần tử liền kề trong mảng khác nhau tối đa là 1 đơn vị và ta có một đại diện cho mảng với một vài giá
trị chưa được biết.
Yêu cầu: Hãy đếm xem có bao nhiêu cách tìm tạo ra các mảng.
Dữ liệu: Đọc vào từ file REPRESENT.INP gồm
− Dòng đầu tiên chứa số 𝑛 và 𝑚 – tương ứng với số phần tử trong mảng và giá trị cận trên của giá trị
mỗi phần tử trong mảng.
− Dòng tiếp theo chứa n phần tử 𝑥1 , 𝑥2 , … , 𝑥𝑛 là giá trị các phần tử của mảng. Giá trị 0 là đại diện cho
phần tử chưa biết.
Kết quả: Ghi ra file REPRESENT.OUT
− Một số nguyên là số cách tạo mảng module cho 109 + 7
Ràng buộc
1 ≤ 𝑛 ≤ 105
1 ≤ 𝑚 ≤ 100
0 ≤ 𝑥𝑖 ≤ 𝑚
Ví dụ:
REPRESENT.INP REPRESENT.OUT
35 3
202
Giải thích: Các mảng có thể tạo được [2,1,2], [2,2,2] và [2,3,2]
Bài 8. Đường đi trên lưới - Paths
Cho một lưới ô vuông kích thước n × n, trong đó có ô vuông có thể có bẫy và không cho phép di chuyển
qua ô vuông có bẫy. Trên ô lưới, bạn chỉ có thể di chuyển bằng 2 cách: sang phải hoặc xuống dưới.
Yêu cầu: Tính số đường đi từ vị trí hình vuông phía trên bên trái đến hình vuông phía dưới bên phải.
Dữ liệu: Đọc vào từ file PATHS.INP:
− Dòng đầu tiên là một số nguyên 𝑛: kích thước của lưới.
− N dòng sau đó để mô tả lưới.
o Mỗi dòng có 𝑛 ký tự: dấu . biểu thị một ô trống và * biểu thị một cái bẫy.
Kết quả: Ghi vào file PATHS.OUT gồm
− Một số nguyên là số cách di chuyển (module cho 109 + 7
Ràng buộc:
1 ≤ 𝑛 ≤ 1000
Ví dụ:
PATHS.INP PATHS.OUT
4 3
....
.*..
...*
*...

You might also like