#00 - Bài 5 - Nhảy 2
Lại tiếp tục cho một dãy gồm \(n+1\) ô xếp liên tiếp nhau từ ô \(0\) tới ô \(n\); trong đó có \(k\) ô \(A_1, A_2, \dots, A_k\) ta không thể bước chân vào (ô bị chặn).
Bạn ban đầu đứng ở ô \(0\), và bạn phải tìm cách di chuyển tới ô \(n\) bằng cách nhảy 1 ô hoặc nhảy 2 ô.
Cụ thể, nếu bạn đang ở ô \(i\), thì bạn có thể nhảy sang một trong hai ô \(i+1\) hoặc \(i+2\), miễn là nơi bạn nhảy tới không phải là ô bị chặn và vẫn chưa nằm ngoài \(n+1\) ô.
Hãy đếm số cách di chuyển từ ô \(0\) tới ô \(n\).
Dữ liệu đầu vào
- Dòng thứ nhất chứa hai số lần lượt là \(n\) và \(k\) \((0 \leq k \leq n \leq 10^5)\).
- Dòng thứ hai chứa \(k\) số \(A_1, A_2, \dots, A_k\) \((1 \leq A_i \leq n)\).
Định dạng đầu ra
- In ra một số duy nhất là số lượng cách nhảy từ ô \(0\) tới ô \(n\), chia lấy dư cho \(998244353\).
Điểm số
- Subtask \(1\) (\(30\%\) số điểm): \(n \leq 20\)
- Subtask \(2\) (\(25\%\) số điểm): \(k = 0\)
- Subtask \(3\) (\(45\%\) số điểm): không có giới hạn nào khác.
Ví dụ
Ví dụ 1
Đầu vào
7 2
1 6
Đầu ra
3
Giải thích
Có ba cách di chuyển:
- \(0 \rightarrow 2 \rightarrow 3 \rightarrow 4 \rightarrow 5 \rightarrow 7\)
- \(0 \rightarrow 2 \rightarrow 3 \rightarrow 5 \rightarrow 7\)
- \(0 \rightarrow 2 \rightarrow 4 \rightarrow 5 \rightarrow 7\)
USACO 2023 February Contest, Gold, Piling Papers
Nông dân John viết \(N(1 \leq N\leq300)\) chữ số lên một vài mảnh giấy. Với mỗi \(i\in[1,N]\), mảnh giấy thứ \(i\) chứa chữ số \(a_i\) \((1\leq a_i \leq 9)\).
Những con bò có hai số nguyên yêu thích \(A\) và \(B (1\leq A\leq B<10^{18} )\) và muốn bạn trả lời \(Q\) truy vấn \((1\leq Q\leq5*10^4)\). Đối với truy vấn thứ i, đám bò sẽ đi qua các mảnh giấy \(l_i…r_i (1\leq l_i\leq r_i\leq N )\) từ trái sang phải, duy trì một chồng giấy. Đối với mỗi mảnh giấy, chúng sẽ thêm nó vào đầu chồng, vào cuối chồng hoặc không thêm vào. Cuối cùng, chúng sẽ đọc các mảnh giấy trong chồng từ trên xuống dưới, tạo thành một số nguyên. Trên tất cả \(3^{r_i−l_i+1}\) cách để chúng đưa ra lựa chọn, hãy đếm số cách tạo ra số nằm trong đoạn \([A,B]\) in ra số này với \(modulo\) \(10^9+7\).
Input
- Dòng đầu tiên chứa ba số \(N\), \(A\) và \(B\).
- Dòng thứ hai chứa \(a_1,a_2,..,a_N\).
- Dòng thứ ba chứa số \(Q\) - số truy vấn.
- \(Q\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(l_i\) và \(r_i\).
Output
In ra kết quả mỗi truy vấn trên \(1\) dòng.
Scoring
- Subtask \(1\): \(B < 100\)
- Subtask \(2\): \(A=B\)
- Subtask \(3\): Không có điều kiện gì thêm.
Example
Test 1
Input
5 13 327
1 2 3 4 5
3
1 2
1 3
2 5
Output
2
18
34
Note
Với truy vấn đầu tiên, có \(9\) cách để tạo ra số trong khoảng \([1,2]\):
- Bessie có thể bỏ qua \(1\) rồi bỏ qua \(2\), được \(0\).
- Bessie có thể bỏ qua \(1\) rồi thêm \(2\) vào đầu ngăn xếp, được \(2\).
- Bessie có thể bỏ qua \(1\) rồi thêm \(2\) vào cuối ngăn xếp, được \(2\).
- Bessie có thể thêm \(1\) vào đầu ngăn xếp rồi bỏ qua \(2\) , được \(1\).
- Bessie có thể thêm \(1\) vào đầu ngăn xếp, sau đó thêm \(2\) vào đầu ngăn xếp, được \(21\).
- Bessie có thể thêm \(1\) vào đầu ngăn xếp rồi thêm \(2\) vào cuối ngăn xếp, được \(12\).
- Bessie có thể thêm \(1\) vào cuối ngăn xếp rồi bỏ qua \(2\) , được \(1\).
- Bessie có thể thêm \(1\) vào cuối ngăn xếp rồi thêm \(2\) vào đầu ngăn xếp, được \(21\).
- Bessie có thể thêm \(1\) vào cuối ngăn xếp rồi thêm \(2\) vào cuối ngăn xếp, được \(12\).
Chỉ có \(2\) cách tạo ra \(21\) - nằm trong khoảng từ \(13\) đến \(327\), vì vậy câu trả lời là \(2\).
Số lượng ước số
Yêu cầu
Viết chương trình nhập vào số nguyên \(n, 1 \leq n \leq 10^{12}\). In ra số lượng ước số của \(n\). (Ước số của \(n\) là các số nguyên mà \(n\) chia hết)
Ví dụ: \(n = 10\) thì có 4 ước là: \(1, 2, 5, 10\).
Input:
- Cho số nguyên dương \(n, 1 \leq n \leq 10^{12}\).
Output:
- Kết quả bài toán.
Scoring
- \(50%\) số điểm có \(n \leq 10^7\).
- \(50%\) số điểm có \(n \leq 10^{12}\).
Example
Test 1
Input
9
Output
3
Test 2
Input
20
Output
6
Chia hai
Tìm và đưa ra tất cả các số có \(3\) chữ số có dạng \(xy\ldots\) chia hết cho \(2\). Các số nằm trên cùng một dòng, theo thứ tự giá trị tăng dần và cách nhau một khoảng trắng.
Input
- Dòng 1 chứa số nguyên dương \(x\)
- Dòng 2 chứa số nguyên dương \(y\)
Output
- In ra dãy các số chia hết cho 2 có dạng \(xy\ldots\).
Example
Test 1
Input
2
3
Output
230 232 234 236 238