题目:
解题思路:
由1拼到10,拼到11的时候就不够了,因为1 和 10 都消耗了卡片1的个数 ---可见卡片1是消耗最快的。题目中让求0~9 共20210张牌,最终拼得的数为多少,那么只需要球得消耗2021张卡片1时,所得的数即可。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int cnt[9]={0}; // 计数器 存入0~9 卡牌的使用次数
int ans; // 答案
int count = 2021; // 每种卡片有2021张
for(int i=1; ;i++){ // 从1开始是因为数字0 不用拼 循环终止条件在循环体中判断
int n=i;
while(n){
cnt[n % 10] ++;
n /= 10;
}
if(cnt[1]>count){ // 如果 卡片1的使用次数 > 2021时候 退出循环
ans = i-1; // 注意此时这个数是不能拼成的 如题目中的 11
break;
}
}
cout<<ans<<endl;
return 0;
}
答案:
3181