再求助,模拟题
查看原帖
再求助,模拟题
389192
andychen_2012楼主2021/10/6 19:18

给一个数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

数据范围n109n\le 10^9

这道题应该能够用模拟做,因为能够删去末尾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;
}
2021/10/6 19:18
加载中...