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)f(x) in such a way: we add 11 to xx, then, while there is at least one trailing zero in the resulting number, we remove that zero. For example,
- f(599)=6f(599)=6: 599+1=600→60→6599+1=600→60→6;
- f(7)=8f(7)=8: 7+1=87+1=8;
- f(9)=1f(9)=1: 9+1=10→19+1=10→1;
- f(10099)=101f(10099)=101: 10099+1=10100→1010→10110099+1=10100→1010→101.
We say that some number yy is reachable from xx if we can apply function ff to xx some (possibly zero) times so that we get yy as a result. For example, 102102 is reachable from 1009810098 because f(f(f(10098)))=f(f(10099))=f(101)=102f(f(f(10098)))=f(f(10099))=f(101)=102; and any number is reachable from itself.
You are given a number nn; your task is to count how many different numbers are reachable from nn.
Input
The first line contains one integer nn (1≤n≤1091≤n≤109).
Output
Print one integer: the number of different numbers that are reachable from nn.
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.
解题说明:此题是一道数学题,按照题目意思找规律求解。
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
long long int n, c = 9;
scanf("%lld", &n);
if (n >= 10)
{
c++;
}
while (n >= 10)
{
c = c + (9 - n % 10);
n = n / 10;
}
printf("%lld\n", c);
return 0;
}