2021蓝桥杯-卡片
题目描述:
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝有很多数字卡片,每张卡片上都是数字0到9。小蓝准备用这些卡片来拼一些数,他想从1开始拼出正整数,每拼一个, 就保存起来,卡片就不能用来拼其它数了。 小蓝想知道自己能从1拼到多少。 例如,当小蓝有 30张卡片,其中0到9各3张,则小蓝可以拼出1到 10,但是拼11时卡片1已经只有一张了,不够拼出11。
现在小蓝手里有0到9的卡片各2021张,共20210张,请问小蓝可以从1拼到多少?
提示:建议使用计算机编程解决问题。
运行限制:
最大运行时间:1s
最大运行内存: 128M
思路:1会首先被用完(1 10 11 需要4个),因此,只需要枚举出1出现的次数即可
关键方法:枚举每一个数,进行数位拆分,计数
#include <stdio.h>
int main()
{
int cnt=0;
//枚举每一个数,进行拆分,计数
for(int i=1; ;i++){
int n=i;//将i赋值给n,避免影响
while(n!=0){//数位拆分
int k=n%10;
n=n/10;
if(k==1){//如果是1,则计数
cnt++;
if(cnt==2021){//当等于2021,输出i
printf("%d",i);
}
}
}
}
return 0;
}
最终答案:3181