Điều hướng chính

Nhắn tin NQ Coding

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập

Bài được chọn theo nhịp luyện tập của bạn, cùng mọi bài mới vừa lên.

Dễ

Ếch qua sông

100 điểm 100% AC 1 đã giải

staffagent

Chú ếch Bin phải qua một con sông để về nhà. Từ bờ trái đến bờ phải có \(N\) hòn đá xếp thành một hàng, đánh số \(1, 2, \dots, N\) theo chiều từ trái sang phải. Ta coi bờ trái là vị trí \(0\) và bờ phải là vị trí \(N+1\). Bin xuất phát ở bờ trái và chỉ được nhảy về phía bờ phải: từ vị trí \(x\) có thể nhảy tới \(x+1\), \(x+2\) hoặc \(x+3\) (không được vượt quá bờ phải, cũng không được nhảy lùi).

Mỗi hòn đá thuộc một trong ba loại:

  • Loại \(0\) (đá chắc): không có hạn chế gì.
  • Loại \(1\) (đá lung lay): Bin chỉ có thể đáp xuống nó bằng bước nhảy \(+1\) (tức là từ vị trí ngay trước nó), và khi đứng trên nó chỉ có thể nhảy \(+1\) hoặc \(+2\) (không được nhảy \(+3\)).
  • Loại \(2\) (đá mục): Bin không được đáp xuống hòn đá này.

Hai bờ sông được coi như đá chắc.

Hãy đếm số cách khác nhau để Bin đi từ bờ trái sang bờ phải (hai cách khác nhau nếu tập các vị trí đã đặt chân khác nhau). Vì kết quả có thể rất lớn nên chỉ cần in ra phần dư khi chia cho \(10^9\) (không cần thêm số 0 ở đầu).

Input

  • Dòng đầu tiên chứa số nguyên dương \(N\).
  • Dòng thứ hai chứa \(N\) số nguyên \(A_1, A_2, \dots, A_N\) với \(A_i \in \{0, 1, 2\}\) là loại của hòn đá thứ \(i\).

Output

In ra một số nguyên là số cách qua sông, lấy phần dư khi chia cho \(10^9\).

Constraints

  • \(1 \le N \le 10000\)
  • \(A_i \in \{0, 1, 2\}\)

Sample Input 1

8
0 1 0 0 1 0 2 0

Sample Output 1

26

Sample Input 2

9
0 0 1 2 1 0 0 0 0

Sample Output 2

0

Explanation

Ở ví dụ 2, hòn đá thứ 4 bị mục nên không thể đặt chân. Để vượt qua nó phải nhảy từ vị trí 3 sang vị trí 5, nhưng hòn đá 5 lung lay và chỉ có thể đáp xuống từ vị trí 4, nên không có cách nào qua sông.

Dễ

Đóng cọc cột trâu

100 điểm 100% AC 1 đã giải

staffagent

Bờ đê là trục hoành \(Ox\). Cuội có hai con trâu ở các điểm \((x, y)\) và \((u, v)\) trên đồng cỏ (không đổi vị trí). Cuội muốn đóng một cọc tại một điểm trên trục \(Ox\) rồi dùng hai sợi dây nối từ cọc tới từng con trâu, sao cho tổng độ dài hai sợi dây là nhỏ nhất.

Hãy in ra hoành độ của điểm đóng cọc.

Input

  • Dòng đầu chứa hai số nguyên \(x\) và \(y\).
  • Dòng thứ hai chứa hai số nguyên \(u\) và \(v\).

Output

In ra hoành độ của điểm đóng cọc, làm tròn đến đúng \(5\) chữ số sau dấu phẩy (dữ liệu đảm bảo không có trường hợp nằm đúng giữa hai số làm tròn).

Constraints

  • \(-10^9 \le x, y, u, v \le 10^9\).
  • \(y\) và \(v\) không đồng thời bằng \(0\).

Sample Input

0 3
6 1

Sample Output

4.50000

Explanation

Hai con trâu cùng phía trục \(Ox\). Lấy đối xứng \((6,1)\) qua \(Ox\) được \((6,-1)\); đường thẳng nối \((0,3)\) và \((6,-1)\) cắt \(Ox\) tại \(x = 4.5\).

Dễ

Đếm xâu đối xứng trong đoạn

100 điểm 100% AC 1 đã giải

staffagent

Một xâu được gọi là đối xứng (palindrome) nếu đọc từ trái sang phải và từ phải sang trái đều cho cùng một dãy ký tự, chẳng hạn abba, aba, c.

Cho xâu \(S\) gồm \(N\) ký tự, đánh số từ \(1\) đến \(N\). Xâu con \(S[i..j]\) (\(1 \le i \le j \le N\)) là dãy ký tự \(S_i S_{i+1} \ldots S_j\); hai xâu con ở hai vị trí khác nhau được tính là khác nhau dù nội dung có thể giống nhau.

Có \(T\) truy vấn, mỗi truy vấn cho hai số \(a, b\) (\(a \le b\)). Với mỗi truy vấn, hãy đếm số xâu con đối xứng \(S[i..j]\) thỏa mãn \(a \le i \le j \le b\).

Input

  • Dòng đầu chứa hai số nguyên \(N\) và \(T\).
  • Dòng thứ hai chứa xâu \(S\) độ dài \(N\), gồm các chữ cái tiếng Anh (phân biệt chữ hoa và chữ thường).
  • \(T\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(a\) và \(b\).

Output

  • In ra \(T\) dòng, dòng thứ \(k\) là đáp án của truy vấn thứ \(k\).

Constraints

  • \(1 \le N, T \le 1000\)
  • \(1 \le a \le b \le N\)

Sample Input 1

5 3
abaab
1 3
2 5
4 4

Sample Output 1

4
6
1

Explanation

Với truy vấn \((1,3)\) xét xâu aba: các xâu con đối xứng là a, b, a, aba nên có \(4\) xâu.

Dễ

Đổi vàng lấy đô la

100 điểm 100% AC 1 đã giải

staffagent

Tại vương quốc Kimlandia, mỗi đồng vàng có ghi một số nguyên không âm. Nhà băng ở đây có luật đổi tiền rất lạ: một đồng ghi số \(n\) có thể được tách thành ba đồng mới ghi các số \(\lfloor n/2 \rfloor\), \(\lfloor n/3 \rfloor\) và \(\lfloor n/4 \rfloor\) (phép chia lấy phần nguyên). Các đồng mới lại có thể tiếp tục được tách như vậy, bao nhiêu lần tuỳ ý.

Ngoài ra, mỗi đồng vàng ghi số \(x\) có thể đổi thẳng ra \(x\) đô la với tỉ giá \(1:1\). Không thể đổi ngược từ đô la sang vàng.

Bạn đang có một đồng vàng ghi số \(n\). Hỏi số đô la nhiều nhất có thể thu được là bao nhiêu?

Input

Dữ liệu gồm nhiều bộ test (không quá \(10\)), mỗi bộ test là một dòng chứa một số nguyên \(n\). Dữ liệu kết thúc ở cuối tệp.

Output

Với mỗi bộ test in ra một dòng là số đô la lớn nhất thu được.

Constraints

  • \(0 \le n \le 10^9\)

Sample Input

6
11
13
24
100
999
987654321

Sample Output

6
11
13
27
120
1370
4241507870

Explanation

Với \(n = 13\): tách thành \(6, 4, 3\) chỉ được \(13\), bằng đổi thẳng. Với \(n = 24\): tách thành \(12, 8, 6\); đồng \(12\) lại tách thành \(6, 4, 3\) (tổng \(13\)), cộng \(8 + 6\) được \(27\).

Xem thêm