C/C++蓝桥杯之卡片问题

问题描述:小兰有很多数字卡片,每张卡片上都是数字0~9。

小兰,准备用这些卡片拼一些数。她想从1开始拼出正整数,每拼一个就保存起来,卡片就不能再用来拼其他数了。

小兰想知道自己能从1拼到多少。

例如,若小兰有30张卡片,其中0~9张各3张,则小兰可以拼出1~10,但是在拼11时,卡片1已经有一张了,因此不能拼出11。

现在小兰手里有0~9的卡片各2021张,共20210张卡片,请问小兰可以从1拼到多少?

分析:求解本题应首先定义一个长度为10的数组,用来存放数字0~9的卡片数,下标代表数字,元素代表卡片已经使用的张数,初始值为0,每种类型的卡片如果使用超过2021张,则输出结果。

程序从1开始递增遍历,当遍历到某个数时,将拼成该数所需的所有卡片类型数增加,随后判断数组中每种卡片是否被用完,如果用完则退出循环。

C语言程序:

#define _CRT_SECURE_NO_WARNINGS 1


#include<stdio.h>
int main()
{
	int a[10] = {0,0,0,0,0,0,0,0,0,0};
	for (int s=1;; s++)
	{
		int temp = s;
		while (temp)
		{
			a[temp % 10]++;
			temp /= 10;
		}
		for (int i = 0; i < 10; i++)
		{
			if (a[i] > 2021)
			{
				printf("%d", s-1 );
				return 0;
			}
		}
	}
}

C++程序:

#include<iostream>
using namespace std;
int a[10];
int main()
{
	for(int s=1;;s++)
	{
		int temp=s;
		while(temp)
		{
			a[temp%10]++;
			temp/=10;
		}
		for(int i=0;i<10;i++)
		{
			if(a[i]>2021)
			{
				cout<<s-1<<endl;//减1是因为这一张无法凑出
				return 0;
			}
		}
	}
}

此题难度不算太高,自己手动调试一下完全能够弄懂!

相关推荐

  1. C/C++卡片问题

    2024-03-20 06:26:02       42 阅读
  2. web真题:卡片话标签页

    2024-03-20 06:26:02       38 阅读
  3. 每日一题内存问题

    2024-03-20 06:26:02       60 阅读
  4. C/C++日期问题

    2024-03-20 06:26:02       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-20 06:26:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-20 06:26:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-20 06:26:02       87 阅读
  4. Python语言-面向对象

    2024-03-20 06:26:02       96 阅读

热门阅读

  1. opencv逐帧获取视频图片

    2024-03-20 06:26:02       49 阅读
  2. 尚硅谷数据库|视图/存储过程与函数/流程控制

    2024-03-20 06:26:02       37 阅读
  3. nginx日志统计qps

    2024-03-20 06:26:02       42 阅读
  4. 记一次Jenkins打包镜像报错问题

    2024-03-20 06:26:02       35 阅读
  5. 机器学习和大模型的关系,怎么入门

    2024-03-20 06:26:02       49 阅读
  6. ElementPlus布局出现“xx/index.vue“. Does the file exist?

    2024-03-20 06:26:02       45 阅读
  7. C++开发基础——可变参数与可变参数模板

    2024-03-20 06:26:02       37 阅读
  8. Django笔记

    2024-03-20 06:26:02       27 阅读