卡片
小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。 小蓝准备用这些卡片来拼一些数,他想从 1开始拼出正整数,每拼一个, 就保存起来,卡片就不能用来拼其它数了。 小蓝想知道自己能从 11拼到多少。
例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10, 但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。
现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210张,请问小蓝可以从 11拼到多少? 提示:建议使用计算机编程解决问题
代码
#include<stdio.h>
int num[10]; //0-9卡片数量
int main()
{
int i;
bool check(int x);
for(i=0;i<10;i++)
{
num[i]=2021;
}
for(i=1;;i++)
{
if(check(i)==false) //第i个数拼不成
{
printf("%d",i-1);
return 0;
}
}
return 0;
}
bool check(int x)
{
while(x>0)
{
int y;
y=x%10; //取x的最后一位
if(num[y]<=0) //如果没有这个数字的卡片返回false
return false;
num[y]--; //有就使用
x=x/10; //继续判断x的其他位数字
}
return true;
}