CSES - Removing Digits | Loại bỏ chữ số

Xem PDF

Điểm: 1300 Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Bạn được cho một số nguyên \(n\). Ở mỗi bước, bạn có thể trừ \(n\) đi một lượng bằng một trong các chữ số của nó.

Cần bao nhiêu bước để làm cho \(n\) bằng \(0\)?

Input

  • Gồm một dòng duy nhất chứa số nguyên \(n\).

Output

  • In ra một số nguyên duy nhất là số bước tối thiểu cần dùng.

Constraints

  • \(1 \leq n \leq 10 ^ 6\)

Example

Sample input

27

Sample output

5

Note

Một giải pháp tối ưu là \(27 \to 20 \to 18 \to 10 \to 9 \to 0\).


Bình luận

  • Huycodengu 9:40 p.m. 14 Tháng 12, 2024

    include <bits/stdc++.h>

    using namespace std;

    int main() {
    string s; long long d=0;
    cin >> s;
    long long max_length = stoll(s);
    while (max_length > 0) {
    long long check = 0;
    for (char c : s) {
    check = max(check, static_cast<long long>(c - '0'));
    }
    max_length -= check;
    s = to_string(max_length);
    d++;
    }

    cout << d << endl;
    return 0;
    

    }

    • hoangphucnguyen 9:21 p.m. 28 Tháng 10, 2024

      Cày trâu là full ac

      • ducmatgoclyhoa 10:44 a.m. 11 Tháng 10, 2024

        Câu này giống tham lam hơn là DP =))))))

        • TH06_2024 8:37 a.m. 23 Tháng 8, 2024 đã chỉnh sửa

          ezzz gg 1300
          hầu hết là có 1 quy tắc thui

          • SBD20_Caominhduc 9:14 p.m. 2 Tháng 8, 2024
            #include <bits/stdc++.h>
            #define ll long long
            using namespace std;
            int n,dem;
            string st;
            string to_str(int n)
            {
                string st="";
                while(n>0)
                {
                    st=st+char(n%10+48);
                    n/=10;
                }
                reverse(st.begin(),st.end());
                return st;
            }
            int to_num(string st)
            {
                int n=0;
                int k=st.size();
                for(int i=0;i<k;i++)
                {
                    n=n*10+(st[i]-48);
                }
                return n;
            }
            int main()
            {
                ios_base::sync_with_stdio(0);cin.tie(NULL);
                cin >> st;
                while(st.size()>0&&st[0]!='0')
                {
                    char kq='0';
                    n=st.size();
                    for(int i=0;i<n;i++)
                    {
                        kq=max(kq,st[i]);
                    }
                    st=to_str(to_num(st)-(kq-48));
                    dem++;
                }
                cout << dem;
                return 0;
            }
            

            Spoiler

            Code C++ Không dùng stoi và to_string

            • tk22NguyenHuuPhuHung 4:29 p.m. 5 Tháng 7, 2024

              Bài này dễ mà điểm cao quá à 🐧🐧

              • ceaturs 2:39 p.m. 22 Tháng 5, 2024

                ý tường vấn là tìm chữ số lớn nhất trong n rồi lấy n trừ đi chữ số đó là được.

                int main(){
                string s;
                cin>>s;
                int cnt=1;
                while(s.size()>1 &&s[0]!='0'){
                char i=0;
                for(auto x:s){
                i=max(i,x);
                }
                s=to_string(stoi(s)-(i-'0'));
                cnt++;

                }

                cout<<cnt<<endl;
                return 0;
                }

                • thuan30122005 12:44 a.m. 1 Tháng 1, 2024

                  bài này dùng đệ quy là ra ấy mà
                  easy

                  • tester123 10:59 p.m. 2 Tháng 11, 2023

                    Ad ơi vẫn còn mấy người dùng if else test mong ad xử lý ạ

                    • letangphuquy 7:10 p.m. 28 Tháng 8, 2023

                      Cảm ơn bạn superman1236969 đã góp ý bản dịch!

                      • 4 bình luận nữa