LQ0080 卡片进制

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0080 卡片进制相关的知识,希望对你有一定的参考价值。

题目来源:蓝桥杯2021初赛 C++ A组A题

题目描述
小蓝有很多数字卡片,每张卡片上都是数字0 到9。
小蓝准备用这些卡片来拼一些数,他想从1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从1 拼到多少。
例如,当小蓝有30 张卡片,其中0 到9 各3 张,则小蓝可以拼出1 到10,但是拼11 时卡片1 已经只有一张了,不够拼出11。
现在小蓝手里有0 到9 的卡片各2021 张,共20210 张,请问小蓝可以从1拼到多少?
提示:建议使用计算机编程解决问题。

问题分析
从1开始,对1,2,3,4,…,10,11,12,13,14,…的各位数字进行统计,0-9的各个数字不超过2021作为结束条件。

AC的C语言程序如下:

/* LQ0080 卡片 */

#include <stdio.h>
#include <string.h>

#define N 2021
int dcnt[10];

int judge(int n)

    while (n) 
        int d = n % 10;
        if (++dcnt[d] > N) return 0;
        n /= 10;
    
    return 1;


int main()

    memset(dcnt, 0, sizeof dcnt);

    int cnt = 0;
    for (int i = 1; ; i++) 
        if (judge(i))
            cnt++;
        else
            break;
    

    printf("%d\\n", cnt);

    return 0;

以上是关于LQ0080 卡片进制的主要内容,如果未能解决你的问题,请参考以下文章

LQ0068 X进制减法进制

LQ0112 立方和进制

LQ0016 九进制转十进制进制

LQ0016 九进制转十进制进制

LQ0010 字串数字进制

LQ0010 字串数字进制