给一个数n,每次将它+1,如果n的末尾有0,将末尾的0全部删去。求n最终能够衍生出多少个数。
如1099能衍生出19个数:1099,11,12,13,14,15,16,17,18,19,2,3,4,5,6,7,8,9,1
样例输入:1099
样例输出:19
数据范围n≤109
这道题应该能够用模拟做,因为能够删去末尾0,所以时间复杂度是很小的,顶多是9×10.
但是我代码打挂了。
求助求助:
#include<cstdio>
int n,ans,vis[15];
int main(){
scanf("%d",&n);
ans=1;
while(n>0){
n++;
while(n%10==0&&n>0)
n/=10;
if(n>0&&n<10){
if(vis[n]==0)
ans++;
else
break;
vis[n]=1;
}
else
ans++;
}
printf("%d\n",ans);
return 0;
}