Contest kiểm tra các lớp TFL


LASER - Đèn laser

Nộp bài
Điểm: 100 Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Lưu ý: Các bạn không nhập xuất qua file kể cả khi đề bài có yêu cầu.


GAME - Trò chơi bốc sỏi

Nộp bài
Điểm: 100 Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Lưu ý: Các bạn không nhập xuất qua file kể cả khi đề bài có yêu cầu.



EQUAL - Số cân bằng

Nộp bài
Điểm: 100 Thời gian: 1.0s Bộ nhớ: 256M Input: EQUAL.INP Output: EQUAL.OUT

Mộ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ài
Điểm: 100 Thời gian: 1.0s Bộ nhớ: 256M Input: FUNCT.INP Output: FUNCT.OUT

Cho 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ài
Điểm: 100 Thời gian: 1.0s Bộ nhớ: 256M Input: CHANGE.INP Output: CHANGE.OUT

Cho 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ài
Điểm: 100 Thời gian: 1.0s Bộ nhớ: 256M Input: DIVISOR.INP Output: DIVISOR.OUT

Cho 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\)\(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\)\(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
Note