Duyên Hải 2020 - Lớp 10 - Bài 1 - LED

View as PDF

Submit solution


Points: 0.10 (partial)
Time limit: 1.0s
Memory limit: 256M
Input: stdin
Output: stdout

Problem type
Allowed languages
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

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:

  1. Có bao nhiêu vạch LED được kích hoạt để hiển thị số ~N~.
  2. 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ữ liệu vào:

  • 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

Ghi ra:

  • 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~.

Giới hạn

  1. ~(45~ điểm~)~ ~V = 1~, ~N \leq 10^{18}~
  2. ~(20~ điểm~)~ ~V = 2~, ~N < 20~
  3. ~(35~ điểm~)~ ~V = 2~, ~20 \leq N \leq 10^{18}~

Sample Input 1

1
823

Sample Output 1

17

Sample Input 2

2
823

Sample Output 2

5

Note

Ở test 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.

Ở test ví dụ 2: có ~5~ số lớn hơn ~823~ là ~828~, ~829~, ~883~, ~888~, ~889~.


Comments

Please read the guidelines before commenting.



  • 1
    manhvuvanyeuha  commented on Feb. 14, 2025, 4:32 p.m.
    #include <bits/stdc++.h>
    
    using namespace std ; 
    #define ll long long 
    ll v , n ;
    string s ;
    ll dp[10] = {6 , 2 , 5 , 5 , 4, 5, 6 , 3 ,7 , 6} ; 
    ll f[10] = {1 , 5 , 1, 2 , 2 , 3 , 1 , 2 , 0 , 0} , cnt[20] ,cnt2[20] ,  friu[10] = {1 , 6 , 1 , 2 , 2 , 3, 1 , 4 , 0 , 1} ; 
    void sub1()
    {
        cin >> s ; 
        ll ans = 0 ; 
        for(int i = 0 ; i < s.size() ; i++) ans += dp[s[i] - '0'] ; 
        cout << ans ; 
    }
    
    void sub3()
    {
        string str = to_string(n) ; 
        for(ll i = str.size() - 1 ; i >= 0 ; i--)
        {
            cnt[i] = f[str[i] - '0'] ; 
            cnt2[i] = friu[str[i] - '0'] ; 
        }
        ll ans = 0 , vm = 1 ; 
        for(ll i = str.size() - 1 ; i >= 0 ; i--)
        {
        ll res = vm ; 
        vm = vm *(cnt2[i] + 1) ; 
        cnt[i] *= res ;
        ans += cnt[i] ; 
        }
        cout << ans ; 
    
    }
    int main()
    {   
        cin >> v  ; 
        if(v == 1)
        {
            sub1() ;
        }
        else 
        {
        cin >> n ; 
        sub3() ; 
        }
    }
    

    mình xin góp 1 sol của mình :v , ko cần qhđ heheeee


  • -9
    minhduc1th2  commented on Aug. 19, 2024, 5:47 p.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -48
    pmdong  commented on Aug. 19, 2021, 12:34 p.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -48
    NEIK  commented on May 4, 2021, 10:13 a.m. edited

    This comment is hidden due to too much negative feedback. Show it anyway.