Điểm:
400 (p)
Thời gian:
1.0s
Bộ nhớ:
1023M
Input:
bàn phím
Output:
màn hình
Minh nhận được một chiếc máy tính bấm tay màn hình LCD. Màn hình được chia thành các ô biểu diễn chữ số, mỗi ô gồm \(7\) vạch LED và mỗi chữ số sẽ tương ứng với một số vạch LED được kích hoạt nổi màu đen trên ô đó. Cách hiển thị các số như sau:
Minh bấm số nguyên dương \(N\) hiển thị trên màn hình và thắc mắc 2 câu hỏi:
- Có bao nhiêu vạch LED được kích hoạt để hiển thị số \(N\).
- Tính số lượng các số lớn hơn \(N\), có thể được hiển thị bởi kích hoạt thêm ít nhất một vạch LED ngoài các vạch đang được kích hoạt để hiển thị số \(N\) (không tắt bất kỳ vạch LED nào đang hiển thị và không kích hoạt vạch LED trên ô chưa có vạch kích hoạt).
Yêu cầu: Hãy lập trình giúp Minh trả lời \(2\) câu hỏi trên.
Input
- Dòng đầu tiên ghi mã câu hỏi \(V\) là \(1\) hoặc \(2\).
- Dòng thứ 2 ghi số nguyên dương \(N\) (không bắt đầu bởi chữ số \(0\)).
Output
- Nếu \(V=1\) thì in ra số vạch LED được kích hoạt để hiển thị số \(N\).
- Nếu \(V=2\) thì in ra số lượng số lớn hơn \(N\), có thể được hình thành bằng cách kích hoạt thêm ít nhất một vạch LED, bên cạnh các vạch đã kích hoạt được sử dụng để hiển thị số \(N\).
Constraints
- \(N \leq 10 ^ {18}\)
Scoring
- Subtask \(1\) (\(45\%\) số điểm): \(V = 1, N \leq 10 ^ {18}\).
- Subtask \(2\) (\(20\%\) số điểm): \(V = 2, N < 20\)
- Subtask \(3\) (\(35\%\) số điểm): \(V = 2, 20 \leq N \leq 10 ^ {18}\)
Example
Test 1
Input
1
823
Output
17
Test 2
Input
2
823
Output
5
Note
- Ví dụ \(1\): số 8 dùng 7 vạch, số 2 dùng 5 vạch, số 3 dùng 5 vạch, do đó cần 17 vạch.
- Ví dụ \(2\): có 5 số lớn hơn 823 là 828, 829, 883, 888, 889.
Bình luận
Spoiler Alert
Hint 1
Query 1: Tính tổng vạch led bật mỗi chữ số từ số n
Query 2: Với mỗi số x > n có cùng độ dài với n. Tăng biến đếm nếu x có chứa các vạch led n
Hint 2
Query 1: Ta có thể tiền xử lí 10 chữ số 0..9 xem nó có bao nhiêu vạch led bật để tiện
Query 2: Ta có thể thử xây từng chữ số cho x, từ đó đưa ta đến thuật quy hoạch động chữ số
Hint 3
Query 1:
vector<int> csl = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6}; /// Count set-led
Query 2: Thử xây từng chữ số với hàm đệ quy
magic(int index, bool isGreater)
Hint 4
Hint 5
Reference AC code | \(O(log_{10} n)\) + \(O(log_{10} n * 2 * 7)\) time | \(O(1)\) auxiliary space | Brute-forces + DP_digit | Adjacency List Implementation
Reference AC code | \(O(log_{10} n)\) + \(O(log_{10} n * 2 * 7)\) time | \(O(1)\) auxiliary space | Brute-forces + DP_digit
5 bình luận nữa