New Server Div 2

Bộ đề bài

1. Tích chẵn

Điểm: 100 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

ami? có một dãy số nguyên \(a\) gồm \(N\) phần tử. Hãy tìm một đoạn con liên tiếp dài nhất của \(a\) mà tích các phần tử trong đoạn con này là một số nguyên dương chẵn. Dữ liệu đảm bảo luôn có ít nhất một đoạn con thoả mãn điều kiện.

Input

  • Dòng đầu tiên chứa 1 số nguyên dương \(N\) là độ dài dãy \(a\).

  • Dòng tiếp theo chứa \(N\) số nguyên biểu thị một phần tử của dãy \(a\).

Output

  • 1 số nguyên dương là kết quả bài toán.

Scoring

  • Subtask \(1\) (\(70\%\) số điểm): \(N \leq 50\)\(|a[i]| \le 50\).

  • Subtask \(2\) (\(30\%\) số điểm): \(N \leq 10^{5}\)\(|a[i]| \le\) \(10^9\).

Example

Test 1

Input
5
1 -2 -3 -4 5
Output
3
Note

Đoạn con dài nhất thoả mãn điều kiện là đoạn [1, 3] tích của các phần tử trong đoạn này là \(1 \times (-2) \times (-3) = 6\).

2. Quy Hoạch Động Chữ Số

Điểm: 100 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Hàm \(F(a)\) với \(a\) là một số nguyên dương được định nghĩa đệ quy như sau:

  • Nếu \(a < 10, F(a) = a\).
  • Nếu \(a > 9, F(a) = F\)(tổng các chữ số của a).

Ví dụ, \(F(91) = F(10) = 1\).

ami cần các bạn đếm số lượng số \(x\) trong đoạn \([l, r]\)\(F(x) = 9\).

Dễ dàng nhận thấy bài toán này có thể giải được bằng quy hoạch động chữ số cơ bản. Hãy thể hiện trình độ bản thân với ami nhé.

Input

  • Dòng đầu tiên chứa 1 số nguyên dương \(Q\) là lượng câu hỏi.

  • \(Q\) dòng tiếp theo chứa, mỗi dòng chứa 1 cặp số nguyên dương \(l, r\) biểu thị một đoạn.

Output

  • \(Q\) dòng, mỗi dòng là số lượng số \(x\) tương ứng.

Scoring

  • Subtask \(1\) (\(50\%\) số điểm): \(Q \leq 100\)\(1\) \(\leq\) \(l\) \(\leq\) \(r\) \(\leq\) \(10^{5}\).

  • Subtask \(1\) (\(50\%\) số điểm): \(Q \leq 10^{5}\)\(1\) \(\leq\) \(l\) \(\leq\) \(r\) \(\leq\) \(10^{9}\).

Example

Test 1

Input
2
1 2
1 9 
Output
0
1
Note
  • Không có số \(x\) trong đoạn \([1, 2]\)\(F(x) = 9\).
  • Chỉ có \(x = 9\) thuộc đoạn \([1, 9]\)\(F(x) = 9\).

3. Đổi Chữ

Điểm: 100 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

ami lại cho các bạn một xâu kí tự \(S\) gồm \(N\) chữ cái tiếng Anh in thường và một số nguyên dương \(k\). Các bạn có thể áp dụng thao tác sau không quá \(k\) lần:

  • Chọn ra một số \(i\) với \(0 \leq i \lt N\) và đổi \(S_i\) thành một kí tự bất kì.

Đặt \(F(S)\) là độ dài đoạn con dài nhất của \(S\) chỉ chứa các kí tự giống nhau.

Hãy áp dụng thao tác trên một cách tối ưu để \(F(S)\) là lớn nhất và in ra giá trị này.

Input

  • Dòng đầu tiên chứa 1 xâu kí tự \(S\).

  • Dòng tiếp thao chứa một số nguyên dương \(k\).

Output

  • Một số nguyên dương là \(F(S)\) lớn nhất sau khi thực hiện thao tác không quá \(k\) lần.

Scoring

  • Subtask \(1\) (\(60\%\) số điểm): \(1\) \(\leq\) \(k\) , \(N\) \(\leq\) \(100\).
  • Subtask \(2\) (\(40\%\) số điểm): \(1\) \(\leq\) \(k\) , \(N\) \(\leq\) \(10^5\).

Example

Test 1

Input
cuomquaga
1 
Output
3
Note
  • Đổi \(S_8\) thành 'a', xâu \(S\) trở thành "cuomquaaa". \(F("cuomquaaa") = 3\).

4. Giải mã phân số

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 586M Input: bàn phím Output: màn hình

Cho phân số có dạng \(\frac{p}{q}\) trong đó \(p,q\) là các số nguyên dương. Và người ta chứng minh được rằng, luôn tồn tại duy nhất một bộ giải mã \((a_1,a_2,...,a_n)\) của phân số \(\frac{p}{q}\)thoả mãn các điều kiện sau:

  • \(a_i\in \mathbb{N}^{*}\text{ } (\forall i=\overline{1,n})\)

  • \(a_n=1\)

  • \(\frac{p}{q}=a_1+\frac{1}{a_2+\frac{1}{a_3+\frac{1}{...+\frac{1}{a_n}}}}\)

Yều cầu: Cho trước hai số nguyên dương \(p,q\). Hãy in ra bộ giải mã của \(\frac{p}{q}\) dưới dạng như sau:

  • Những kí tự trống ta in ra dấu ".".

  • Đối với thanh ngang của phân số ta sử dụng các chuỗi các dấu "-".

  • Tử số phải nằm tương ứng với điểm chính giữa của thanh ngang phân số.

  • Thanh ngang phân số phải có độ dài vừa đủ bao phủ phần mẫu bên dưới.

(Để hiểu rõ hơn, các bạn có thể xem ví dụ bên dưới).

Input

  • Dòng thứ nhất chứa số \(t(1\le t\le 30)\) - Thể hiện số testcase.

  • \(t\) dòng tiếp theo, mỗi dòng chứa hai số nguyên dương \(p,q(0<q<p<10^{18})\) và đề bài ra đảm bảo \(p>q\).

Output

  • Ứng với mỗi testcase, in ra kết quả có dạng như sau:

  • Dòng thứ nhất ghi: Case i: với \(1\le i\le t\).

  • Block tiếp theo, biểu diễn bộ giải mã của phân số tương ứng.

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): \(50>p>q>0\).

  • Subtask \(2\) (\(80\%\) số điểm): \(10^{18}>p>q>0\).

Example

Test 1

Input
3
39 16
39 19
1002 1001 
Output
Case 1:
..........1......
2.+.-------------
............1....
....2.+.---------
..............1..
........3.+.-----
................1
............1.+.-
................1
Case 2:
......1...
2.+.------
.........1
....18.+.-
.........1
Case 3:
.......1....
1.+.--------
...........1
....1000.+.-
...........1

5. Đếm dãy K phần tử

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bạn được cho một số nguyên dương \(N\) \((N > 1).\)

Nhiệm vụ của bạn là tìm số lượng dãy gồm \(k\) phần tử thỏa mãn :

  • \(a_i \geq 2\) \((∀ i = 1, 2, 3, \dots, k)\).

  • \(a_1 \times a_2 \times \dots \times a_k = N\).

  • \(a_{i + 1}\) chia hết cho \(a_i\). \((∀ i = 1, 2, 3, \dots, k - 1)\).

  • Số \(k\) lớn nhất có thể.

Input

  • Một dòng duy nhất chứa số nguyên dương \(N\) \((2 ≤ N ≤ 10^{12})\).

Output

  • Gồm một dòng duy nhất là số lượng dãy gồm \(k\) phần tử thỏa mãn đề bài.

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): \(N\)số nguyên tố.

  • Subtask \(2\) (\(30\%\) số điểm): \(N ≤ 10 ^ {6}\).

  • Subtask \(3\) (\(50\%\) số điểm): \(N ≤ 10 ^ {12}\).

Example

Test 1

Input
180 
Output
3
Note
  • Với \(N = 180\), ta có \(3\) dãy có độ dài \(k = 2\) là dài nhất thỏa mãn\(:\)
    \([2, 90]\), \([3, 60]\), \([6, 30].\)

Test 2

Input
17
Output
1
Note
  • Với \(N = 17\), ta có duy nhất \(1\) dãy có độ dài \(k = 1\) là dài nhất thõa mãn\(:\)
    \([17].\)