Contest kiểm tra các lớp TFL
GAME - Trò chơi bốc sỏi
Nộp bàiEQUAL - Số cân bằng
Nộp bàiMột số nguyên dương được xem là số cần bằng khi và chỉ khi tổng các chữ số ở nửa bên trái bằng tổng các chữ số ở nửa bên phải. (nếu số lượng chữ số là lẻ thì chữ số ở giữa xem như bỏ qua hoặc tính cho cả hai bên). Ví dụ: \(123123, 222024, 1102,...\) là số cân bằng
Yếu cầu: Tím số cân bằng bé nhất lớn hơn \(N\).
Input
- Đọc từ file EQUAL.INP một số nguyên dương \(N\).
Output
- Ghi ra file EQUAL.OUT kết quả bào toán.
Giới hạn:
- 50% test có \(1 ≤ N ≤ 10^6\)
- 50% test có \(1 ≤ N ≤ 10^{12}\)
Ví dụ:
Test 1
EQUAL.INP
12345
EQUAL.OUT
12403
Note
Test 1
EQUAL.INP
123456
EQUAL.OUT
123501
Note
FUNCT - Hàm số
Nộp bàiCho hàm số \(f(x) = 2x+1\). Định nghĩa hàm \(F_n(x)\) như sau:
- \(F_1(x) = f(x)\)
- \(F_2(x) = f(f(x))\)
- \(F_n(x) = f(F_{n-1}(x))\)
Yêu cầu: tính \(F_n(x)\) chia lấy dư cho \(m\) (là số nguyên dương cho trước).
Input
- Đọc từ file FUNCT.INP ba số nguyên dương \(n, x, m\).
Output
- Ghi ra file FUNCT.OUT kết quả bài toán.
Giới hạn:
- 50% test: \(n, x, m ≤ 10^6\)
- 30% test: \(n, x, m ≤ 10^9\)
- 20% test: \(n, x, m ≤ 10^{18}\)
Ví dụ:
Test 1
FUNCT.INP
4 3 50
FUNCT.OUT
13
Note
\((((3 * 2 + 1) * 2 + 1) * 2 + 1) * 2 + 1 = 63\)
CHANGE - Biến đổi xâu
Nộp bàiCho xâu kí tự \(S\) chỉ gồm những chữ cái in thường. Có hai thao tác biến đổi sau:
- Di chuyển một kí tự ở đầu/cuối xâu \(S\) tới vị trí ngược lại (cuối/đầu)
- Thay đổi một kí tự ở một vị trí bất kì thành một kí tự khác \((a..z)\).
Yêu cầu: Tính số thao tác ít nhất để biến đổi xâu \(S\) thành xâu \(T\).
Input
- Đọc từ file CHANGE.INP hai xâu kí tự chỉ gồm các chữ cái in thường \(S\) và \(T\) có cùng độ dài không quá \(10^3\) trên hai dòng khác nhau.
Output
- Ghi ra file CHANGE.OUT kết quả bài toán.
Giới hạn:
- 50% test: \(|S| ≤ 20\)
- 50% test: \(|S| ≤ 10^3\)
Ví dụ:
Test 1
CHANGE.INP
abcdef
eefabc
CHANGE.OUT
4
Note
abcdef → fabcde → efabcd → defabc → eefabc
Test 2
CHANGE.INP
aaaaab
aabaaa
CHANGE.OUT
2
Note
aaaaab → aaaaaa → aabaaa
DIVISOR - Biến đổi số
Nộp bàiCho phép biến đổi số sau đây: Số nguyên dương \(a\) có thể biến thành số nguyên dương \(b\) khi và chỉ khi thỏa mãn cả hai điều kiện sau:
- \(a+1 < b < 2a\)
- \(b - a\) là ước số của \(a\).
Ví dụ, số \(22\) có thể biến thành các số \(24\) và \(33\), nhưng không thể biến thành \(29, 23\) hay \(44\).
Yêu cầu: Cho hai số nguyên dương \(S\) và \(T\), tìm số bước biến đổi tối thiểu để biến \(S\) thành \(T\).
Input
- Đọc từ file DIVISOR.INP hai số nguyên dương \(S, T\).
Output
- Ghi ra file DIVISOR.OUT kết quả bài toán, nếu không thể biến đổi in \(-1\).
Giới hạn:
- 50% test có \(1 ≤ s < t ≤ 10^3\)
- 50% test có \(1 ≤ s < t ≤ 10^6\)
Ví dụ:
Test 1
DIVISOR.INP
4 24
DIVISOR.OUT
5
Note
4 → 6 → 8 → 12 → 18 → 24
Test 2
Input
4 23
Output
-1