0
点赞
收藏
分享

微信扫一扫

21年蓝桥杯Java B组省赛第二题:卡片


目录

  • ​​🍋题目描述​​
  • ​​🍋思路​​
  • ​​🍋源代码​​
  • ​​🍋其他真题​​

🍋题目描述

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

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

🍋思路

数字填空题。
就是还是暴力的问题。

我们定义长度为10的整型数组。
之后这个数组都取值为2021

这里可以用Arrays.fill( a1, value );

a1是一个数组变量,value是一个a1中元素数据类型的值,作用:填充a1数组中的每个元素都是value

之后,又是暴力遍历。从1开始。
每出现数字,就把对应下标的数组的值减去1。知道某下标数组的值为0,就输出i-1.
需要注意的是用return来结束程序。

21年蓝桥杯Java B组省赛第二题:卡片_赋值

  • 答案:3181

🍋源代码

import java.util.Arrays;

public class Main {
public static void main(String[] args) {
int [] a=new int[10];//定义数组
Arrays.fill(a,2021);//赋值。实际上也可以用for循环赋值,都是一样的
for(int i=1;i<1000000;i++) {//暴力
int x=i;//中间值
while(x!=0) {//while循环
int t=x%10;//取余
if(a[t]>0) {//进行减小卡牌
a[t]--;
}
else {//输出
System.out.println(i-1);
return ;//这里输出之后,程序就结束了,别用break,break只是停止while循环。直接用return。
}
x=x/10;//x要去掉尾部
}
}
}

}


21年蓝桥杯Java B组省赛第二题:卡片_蓝桥杯_02


举报

相关推荐

0 条评论