Submission details
Task:Deleting digits
Sender:aalto26em_007
Submission time:2026-09-28 16:26:26 +0300
Language:C++ (C++20)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.00 sdetails
#7ACCEPTED0.01 sdetails
#8ACCEPTED0.01 sdetails
#9ACCEPTED0.01 sdetails
#10ACCEPTED0.02 sdetails
#11ACCEPTED0.02 sdetails
#12ACCEPTED0.02 sdetails
#13ACCEPTED0.00 sdetails

Code

#include<bits/stdc++.h>
//#include<unordered_set>
#pragma GCC optimize("Ofast")
using namespace std;
#define int long long
#define die(x) return cout << x << endl, 0
#define FI first
#define SE second
#define all(o) o.begin(), o.end()
#define endl '\n'
#define IOS ios::sync_with_stdio(0), cin.tie(0)
#define FILE freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout)
#define SZ(x) ((int)(x).size())
#define PB push_back
#define PF push_front
#define POB pop_back
#define POF pop_front
#define MP make_pair
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef map<int,int> mpi;
typedef set<int> sti;
typedef vector<pii> vii;
typedef map<pii,int> mpii;
typedef set<pii> stii;
typedef long double ld;
typedef long long ll;
int gcd(int x,int y){ return (!y ? x : gcd(y, x%y)); }
int power(int x, int y) { return (!y ? 1 : power(x, y / 2) * power(x, y / 2) * (y % 2 ? x : 1)); }
int to_int(string sconvert){stringstream geek(sconvert);int xconvert = 0; geek >> xconvert; return xconvert;}
int fastMax(int x, int y) { return (((y-x)>>(32-1))&(x^y))^y; }
int fastMin(int x, int y) { return (((y-x)>>(32-1))&(x^y))^x; }
const int MAXN=2e6+30,MAX_LOG=30,MOD=1e9+7,INF=1e9;
const double PI = acos(-1);
int mod(int x) { return (x % MOD + MOD) % MOD; }
int n, m, q;
int dp[MAXN];

// int parent[MAXN], sz[MAXN], population[MAXN];
// int eu[MAXN], ev[MAXN], ew[MAXN];
// int query_x[MAXN], query_y[MAXN], ans[MAXN], query_order[MAXN];
// void make_set(){
//     for(int i=1;i<=n;i++)parent[i]=i;
//     for(int i=1;i<=n;i++)sz[i]=1;
// }
// int find_set(int i){
//     if(parent[i]==i)return i;
//     else return parent[i]=find_set(parent[i]);
// }
// int union_set(int a,int b,int w){
//     int x=find_set(a);
//     int y=find_set(b);
//     if(x==y){
//         population[x]+=w;
//         return 0;
//     }
//     if(sz[x]>sz[y])swap(x,y);
//     parent[x]=y;
//     sz[y]+=sz[x];
//     population[y]+=population[x]+w;
//     return 1;
// }
// bool compare_queries(int left,int right){
//     return query_y[left]<query_y[right];
// }

int max_dig(int num){
    int maxdigit = 0;
    while (num > 0) {
      maxdigit = max(maxdigit, num % 10);
      num /= 10;
    }
    return maxdigit;
}

int MAIN(){
    cin>>n;
    for (int i = 1; i < 10; i++){
        dp[i] = 1;
    }
    for (int i = 10; i <= n; i++){
        dp[i] = 1+dp[i-max_dig(i)];
    }
    cout<<dp[n];
    
    
    return 0;
}
int32_t main(){
    IOS;
    int t=1;
    //cin>>t;
    while(t--)MAIN();
    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
4

correct output
1

user output
1

Test 2

Verdict: ACCEPTED

input
17

correct output
3

user output
3

Test 3

Verdict: ACCEPTED

input
35

correct output
7

user output
7

Test 4

Verdict: ACCEPTED

input
167

correct output
29

user output
29

Test 5

Verdict: ACCEPTED

input
4434

correct output
687

user output
687

Test 6

Verdict: ACCEPTED

input
9722

correct output
1381

user output
1381

Test 7

Verdict: ACCEPTED

input
37882

correct output
5406

user output
5406

Test 8

Verdict: ACCEPTED

input
103330

correct output
13867

user output
13867

Test 9

Verdict: ACCEPTED

input
562167

correct output
75527

user output
75527

Test 10

Verdict: ACCEPTED

input
991919

correct output
127308

user output
127308

Test 11

Verdict: ACCEPTED

input
999993

correct output
128206

user output
128206

Test 12

Verdict: ACCEPTED

input
999999

correct output
128206

user output
128206

Test 13

Verdict: ACCEPTED

input
23456

correct output
3364

user output
3364