蓝桥杯2021年省赛Java B组第二题

题目

小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。
小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从 1 拼到多少。
例如,当小蓝有 30 张卡片,其中 0到9各3 张,则小蓝可以拼出 1到 10.
但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。
现在小蓝手里有 0到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1拼到多少?
提示:建议使用计算机编程解决问题。
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

思路

思路很简单,但是很容易最后结果出现一点点偏差。

最容易想到的就是,建立一个数组,下标为0-9,每一位的元素为2021。

写一个检测这个数组有没有0的方法

    public static boolean check(int[] arr){
        for (int j : arr) {
            if (j == 0) {
                return false;
            }
        }
        return true;
    }

从一开始,遍历,去将每一位数字提取出来,将对应下标的值减去一直到有0出现。

提取每一位的数字可以用用10取模,结果就是末尾的数字,然后除以10就可以变为去除最后一位。

对于小于10的各位数要单独注意一下。

答案

3181

完整代码

    public static void main(String[] args) {
        int[] arr = {2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021};
        int index = 1;
        tip1:
        while (true) {
            int i = index;
            while (i > 0) {
                if (i<10){
                    if (check(arr)){
                        arr[i]--;
                        break;
                    }else {
                        break tip1;
                    }
                }else {
                    int level = i % 10;
                    if (check(arr)) {
                        arr[level]--;
                        printArr(arr);
                        System.out.println();
                        i = i / 10;
                    } else {
                        printArr(arr);
                        System.out.println();
                        break tip1;
                    }
                }
            }
            index++;
        }
        System.out.println(index);
    }
    public static void printArr(int[] arr){
        for (int j : arr) {
            System.out.print(j + " ");
        }
    }
    public static boolean check(int[] arr){
        for (int j : arr) {
            if (j == 0) {
                return false;
            }
        }
        return true;
    }
版权声明:除特殊说明,博客文章均为栋dong原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。
如有需要,请在留言板留言,或者添加我的QQ或者微信
我只是一个学生,如有错误或者侵权,请联系我,谢!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇