蓝桥杯真题练习

导航


1.已知大写字母 A 的 ASCIIASCII 码为 65,请问大写字母 L 的 ASCII 码是多少?

本题考察的是字符与ASCII之间的转换,属于简单题

    public static void main(String[] args) {
        System.out.println("验算:"+trans('A'));
        System.out.println("答案:"+trans('L'));
    }
    public static int trans(char aim){
        return (int) aim;
    }
2.小蓝准备用256MB 的内存空间开一个数组,数组的每个元素都是32 位二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问256MB 的空间可以存储多少个 32 位二进制整数?

本题考察的是空间的进制转换,属于简单题
进制转换表
*一个2进制占用 1bit(比特)

单位进制
1byte(字节)8bit
1KB1024byte
1MB1024KB
1GB1024MB
 public static void main(String[] args) {
        // 根据上面进制表,将256MB 转化为bit再除以32
        System.out.println((256*1024*1024*8)/32);
    }

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

本题需要注意,通过案例可以理解出,找出连续的数值
思路:0到9各2021张,当某一种数字在拼的过程中用完了,那么说明结束

 public static void main(String[] args) {
        int kp[] = new int[10];
        //赋值
        for(int i = 0 ; i <= 9 ; i ++){
            kp[i] = 2021;//每种卡片2021张
        }


        System.out.println(def(kp));




    }
    public static int def(int kp[]){
        int i; //
        for(i = 1 ; i < 20210 ; i ++){
            int t = i;
            while(t>0){
                kp[t%10]--;

                if(kp[t%10] <= 0 ){ // 如果某一种卡牌用尽,则返回当拼出的数
                    return i;
                }
                t /= 10; 
            }
        }
        return 0;
    }

4.小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以1000000007 的余数,会得到不同的数。
小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后再除以1000000007 后的余数为 999999999 如果存在,请在答案中提交这个数;
如果不存在,请在答案中提交 0

注意:由于计算数字过大,应该使用long型
本题属于简单题
 public static void main(String[] args) {
        for (long i = 1; i < 1000000007; i++) {
           if((i*2021)%1000000007==999999999){
               System.out.println(i);
               break;
           }
        }
   
    }
5.小蓝发现,他将 1 11 至 1000000007 之间的不同的数与 2021 相乘后再求除以1000000007 的余数,会得到不同的数。
小蓝想知道,能不能在 1 11 至 1000000007 之间找到一个数,与 2021 20212021 相乘后再除以1000000007 后的余数为 999999999 。如果存在,请在答案中提交这个数;
如果不存在,请在答案中提交 0。

正在学习图中,放一放


6.小蓝要和朋友合作开发一个时间显示的网站。在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 1970 年 1 月 1 日 00 : 00 : 00 到当前时刻经过的毫秒数。
  现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需显示出时分秒即可,毫秒也不用显示,直接舍去即可。
  给定一个用整数表示的时间,请将这个时间对应的时分秒输出。

本题考察对时间的转化
我们可以使用java的日期对象在构造方法中传入毫秒数直接得到答案
但值得注意的是,中国使用的时间会在国际时间的基础上+8:00(即UTC+8:00)则 我们可以使用SimpleDateFormat来设置时区为国际标准时区
    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        long l = sc.nextLong();
        SimpleDateFormat isoFormat = new SimpleDateFormat("HH:mm:ss");
        isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
        System.out.println(isoFormat.format(new Date(l)));
    }
7.你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于N的正整数重量。
那么这套砝码最少需要包含多少个砝码?
注意砝码可以放在天平两边。

本题与背包问题类似,所以我首先想到的就是贪心算法,那么我们只要做到的是尽可能的拿最大的砝码,那么我们拿的砝码就是最少的组合。

需要注意的是“”“砝码可以放在天平两边”,意味着,我们可以通过:

砝码和称重物的和来求物体的重量。

/**
     * 1.称重1
     * 我们需要 砝码1             已有砝码 1
     * 2.称重 2 (请注意,我们需要足够贪心)
     * 我会拿 3 用物体重量+1=3 称重量 2 已有砝码 1  3
     * 3.称重 3 (我已经有3了)
     * 4.称重4 1 +3 即可
     * 5 称重5 我拿 9  物体 + 3 + 1 = 9 已有砝码 1 3 9
     * 6 称重 6  物体 + 3 = 9
     * 7 称重 7 物体 + 3 = 1 + 9
     * 8 称重 8  物体 + 1 = 8
     * 9 称重 9  9
     * 10  称重10 物体 = 1+ 10
     * 称重 11   物体 + 1 =  9 + 3
     * 称重 12  3 + 9  = 物体
     * 称重 14 1 + 3 + 9 = 物体
     * 称重 15 那么我们应该拿多重的砝码呢?
     * 更具已有的砝码,不如我们推测一下 是 27?(3的倍数)
     *
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long l = sc.nextLong();
        result(l);
    }

    public static void result(long N){
        int n=1;
        int w=1;
        int ans=1;
        while((n+w)<N) {
            n+=w;
            w*=3;
            ans++;
        }
        System.out.println(ans);


    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值