タイトル説明
関数f(x)を次のように表します。xに1を追加し、結果の数値に少なくとも1つの後続ゼロがある間に、そのゼロを削除します。例えば、
f(599)= 6:599 + 1 = 600→60→6;
f(7)= 8:7 + 1 = 8;
f(9)= 1:9 + 1 = 10→1;
f(10099)= 101:10099 + 1 = 10100→1010→101。
関数fをxに数回(場合によってはゼロ)適用して、結果としてyを取得できる場合、xからいくつかの数yに到達可能であると言います。たとえば、f(f(f(10098)))= f(f(10099))= f(101)= 102であるため、102は10098から到達可能です。そして、それ自体から任意の数に到達できます。
番号nが与えられます。あなたの仕事は、nから到達可能な異なる数の数を数えることです。
入る
最初の行には整数N(1≤n≤10^ 9)マルチインスタンステストが含まれています
出力
整数を出力します:それから利用可能な異なる数の数n
サンプル入力
1098
サンプル出力
20
コードの内容
#include <iostream>
using namespace std;
int qwe(int n)//除去末尾0
{
while (n!=0)
{
if (n % 10 == 0)
n = n / 10;
else
return n;
}
}
int main()
{
int n,times;
while (cin >> n)
{
times = 0;
if (n <= 9)
cout << "9" << endl;
else
{
while (n >= 10)
{
n = (qwe(n + 1));
times++;
}
cout << times + 9 << endl;
}
}
return 0;
}