题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝有很多数字卡片,每张卡片上都是数字 0到 9。
小蓝准备用这些卡片来拼一些数,他想从 11 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从 1 拼到多少。
例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,
但是拼 11 时卡片 11已经只有一张了,不够拼出 11。
现在小蓝手里有 0 到 9 的卡片各 2021张,共 20210张,请问小蓝可以从 1拼到多少?
提示:建议使用计算机编程解决问题。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
#include<bits/stdc++.h>
using namespace std;
//存放每种卡片的数量
int num[10];
int main(){
int ans = 1;
int n = 0;
cin>>n;
for(int i = 0; i < 10; i++)
num[i] = n;
while(true){
int x = ans;
//下面取出每位数会改变值,所以用x备存ans
while(x){
int now = x % 10;
if(num[now]>0) num[now]--;
else break;
x/=10;
}
if(x>0) break;
else ans++;
}
//可以拼出数为ans-1
cout<<ans-1<<endl;
return 0;
}