比较水的一道题
题意:
输入n
我们将1加上n,当结果数字中有尾随的零时,我们去掉这个零。例如,
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。
您得到一个数字n;您的任务是计算从n可以到达多少个不同的数字。
例如:1098可以到达的值
1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,1098,1099
贴上代码
#include<bits/stdc++.h>
using namespace std;
int num;
map < int, int > vis;
void solve(int n){
if (vis.find(n) != vis.end()) //在出现相同值的时候返回
return ;
vis[n] = 1, num++;
int temp = n + 1;
while(temp % 10 == 0){
temp = temp / 10;
}
solve(temp);
}
int main (){
int n;
cin >> n;
solve(n);
cout << num;
return 0;
}