Algorithm


A. Reachable Numbers
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Let's denote a function f(x)�(�) in such a way: we add 11 to x�, then, while there is at least one trailing zero in the resulting number, we remove that zero. For example,

  • f(599)=6�(599)=6: 599+1=600→60→6599+1=600→60→6;
  • f(7)=8�(7)=8: 7+1=87+1=8;
  • f(9)=1�(9)=1: 9+1=10→19+1=10→1;
  • f(10099)=101�(10099)=101: 10099+1=10100→1010→10110099+1=10100→1010→101.

We say that some number y� is reachable from x� if we can apply function f� to x� some (possibly zero) times so that we get y� as a result. For example, 102102 is reachable from 1009810098 because f(f(f(10098)))=f(f(10099))=f(101)=102�(�(�(10098)))=�(�(10099))=�(101)=102; and any number is reachable from itself.

You are given a number n�; your task is to count how many different numbers are reachable from n�.

Input

The first line contains one integer n� (1≤n≤1091≤�≤109).

Output

Print one integer: the number of different numbers that are reachable from n�.

Examples
input
Copy
1098
output
Copy
20
input
Copy
10
output
Copy
19
Note

The numbers that are reachable from 10981098 are:

1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,1098,10991,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,1098,1099.

 

Code Examples

#1 Code Example with C++ Programming

Code - C++ Programming

#include <bits/stdc++.h>

using namespace std;

int n;
set<int> st;

int main() {
  scanf("%d", &n);

  int res = 0;
  while(st.count(n) != 1) {
    st.insert(n);
    n += 1;
    while(n % 10 == 0)
      n /= 10;
  }

  printf("%d\n", int(st.size()));

  return 0;
}
Copy The Code & Try With Live Editor

Input

x
–
+
cmd
1098

Output

x
–
+
cmd
20
Advertisements

Demonstration


Codeforces Solution Reachable Numbers ,A. Reachable Numbers-Solution in C, C++, Java, Python

Previous
Codeforces solution 1080-B-B. Margarite and the best present codeforces solution
Next
CodeChef solution DETSCORE - Determine the Score CodeChef solution C,C+