| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Tạo mật khẩu | 7 (p) | 1.0s | 1G |
| 2 | Bội chung nhỏ nhất | 7 (p) | 1.5s | 1G |
| 3 | Xóa số | 6 (p) | 0.5s | 1G |
Alice cần tạo một mật khẩu mạnh cho tài khoản mạng xã hội của cô. Cô muốn viết một chương trình tự động, chương trình này nhận vào một xâu ký tự chỉ gồm các số chữ cái trong bảng chữ cái tiếng Anh và trả ra một xâu ký tự là mật khẩu được tạo. Xâu được tạo từ xâu ban đầu theo quy tắc sau đây:
Bạn hãy giúp Alice viết chương trình để tạo mật khẩu như vậy nhé.
Thông tin tệp:
PASSWORD.*PASSWORD.inpPASSWORD.outPASSWORD.out: một dòng duy nhất gồm xâu được tạo ra.Test 1
icpc2025HCMC
C90225icpchcmc4
Ký tự cuối cùng trong xâu ban đầu là C. Xâu có 4 ký tự số 2, 0, 2, 5, sắp xếp lại là 0, 2, 2, 5. Tổng giá trị của chúng là 9. Xâu có 4 ký tự chữ cái in hoa là H, C, M, C, tương ứng với các chữ thường h, c, m, c.
Hôm nay, để giúp cả lớp ôn lại khái niệm về ước chung và bội chung, thầy giáo dạy toán của G và H đưa ra một thử thách nho nhỏ.
Thầy viết lên bảng hai cột số nguyên, mỗi cột gồm \(x\) số – cột bên trái là các số nguyên dương tăng dần bắt đầu từ \(a\), nghĩa là \(a, a + 1, a + 2, \dots, a + x - 1\), cột bên phải là các số nguyên dương tăng dần bắt đầu từ \(b\), nghĩa là \(b, b + 1, b + 2, \dots, b + x - 1\). Các số này được viết thành \(x\) hàng, hàng thứ \(i\) gồm hai số nguyên dương \(a + i - 1\) và \(b + i - 1\).
Sau đó, thầy chia cả lớp thành các nhóm nhỏ, mỗi nhóm cần tìm ra hàng mà bội chung nhỏ nhất của hai số trên hàng đó là nhỏ nhất và tính ra giá trị bội chung nhỏ nhất đó. Nhóm của G và H muốn giành chiến thắng trong trò chơi nên nhờ bạn giúp giải bài toán của thầy giao. Các bạn hãy giúp G và H nhé.
LCM.inp:LCM.out:Test 1
2
14 9 7
24 2 7
30
24
Trong bộ dữ liệu đầu tiên, giá trị bội chung nhỏ nhất tối thiểu tìm được là \(30 = \text{BCNN}(15, 10)\). Trong bộ dữ liệu thứ hai, giá trị tìm được là \(24 = \text{BCNN}(24, 2)\).
Hôm nay, để giúp cả lớp ôn lại khái niệm về ước chung và bội chung, thầy giáo dạy toán của G và H đưa ra một thử thách nho nhỏ.
Có \(V + 1\) số từ \(0\) đến \(V\) được cho vào một dãy \((a_0, a_1, \dots, a_V)\). Thực hiện liên tục các thao tác sau cho đến khi dãy không còn phần tử nào:
Yêu cầu: Cho biết \(V\) được loại bỏ ở thao tác thứ bao nhiêu.
REMOVE.inp:REMOVE.out:Test 1
5 3
2
Ở thao tác đầu tiên, các phần tử \(0, 3\) bị loại: \((0, 1, 2, 3, 4, 5) \rightarrow (1, 2, 4, 5)\).
Test 2
6 2
1
Ở thao tác đầu tiên, các phần tử \(0, 2, 4, 6\) bị loại khỏi dãy \((0, 1, 2, 3, 4, 5, 6)\).
Test 3
6 4
2
Ở thao tác đầu tiên, các phần tử \(0, 4\) bị loại: \((0, 1, 2, 3, 4, 5, 6) \rightarrow (1, 2, 3, 5, 6)\).