2030.到達可能な数

タイトル説明

関数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;
}

おすすめ

転載: blog.csdn.net/weixin_51800059/article/details/111400453