0098 蓝桥杯真题01

news2025/8/10 9:15:37

 

 

 

 

 

 

 

 

 

 

 

 

import java.util.Calendar;

/*
 * 世纪末的星期
 * 曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。还有人称今后的某个世纪末的12月31日,如果是星期一则会…
 * 有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!! 于是,“谣言制造商”又修改为星期日…
 * 1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
 * 请回答该年份(只写这个4位整数,不要写12月31等多余信息)
 * 
 * 思路
 * 运用日期API中Calendar类
 * 
 * 构造方法
 * 1.protected Calendar() :由于修饰符是protected,所以无法直接创建该对象。需要通过别的途径生成该对象
 * 
 * 成员方法
 * 1.static Calendar getInstance(): 使用默认时区和区域设置获取日历。通过该方法生成Calendar对象。
 *                                    如Calendar cr=Calendar.getInstance();
 * 2.public void set(int year,int month,int date,int hourofday,int minute,int second)
 *      设置日历的年、月、日、时、分、秒。
 * 
 * 3.public int get(int field):返回给定日历字段的值。所谓字段就是年、月、日等等。
 * 
 * 日历字段
 * 1.YEAR    年
 * 2.MINUTE 分    
 * 3.DAY_OF_WEEK_IN_MONTH 某月中第几周
 * 4.MONTH 月    
 * 5.SECOND/MILLISECOND 秒/毫秒    
 * 6.WEEK_OF_MONTH 日历式的第几周
 * 7.DATE 日    
 * 8.DAY_OF_MONTH    日
 * 9.DAY_OF_YEAR    一年的第多少天
 * 10.HOUR_OF_DAY    时    
 * 11.DAY_OF_WEEK    周几    
 * 12.WEEK_OF_YEAR    一年的第多少周
 */
public class _01世纪末的星期 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        for(int i = 1999;i < 10000;i += 100) {
            calendar.set(Calendar.YEAR, i);//1999年
            calendar.set(Calendar.MONTH, 11);//从0开始,11为12月
            calendar.set(Calendar.DAY_OF_MONTH, 31);//31日
            if (calendar.get(Calendar.DAY_OF_WEEK) == 1){//星期天为1,星期一为2....
                System.out.println(i);
                break;//2299
            }
        }
    }
}

/*
 * 小明参加了学校的趣味运动会,其中的一个项目是:跳格子。
 * 地上画着一些格子,每个格子里写一个字,如下所示:
 * 从我做起振
 * 我做起振兴
 * 做起振兴中               
 * 起振兴中华
 * 比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。
 * 要求跳过的路线刚好构成“从我做起振兴中华”这句话。
 * 请你帮助小明算一算他一共有多少种可能的跳跃路线呢?
 * 
 * 思路
 * 枚举:递归和迭代
 * 递归三要素
 * 1.找重复,利用重复不断减小问题的规模;
 * 2.找变化,变化的状态量就是递归的参数;
 * 3.找出口,判断什么可以退出递归。
 * 
 * 观察题目,其实在每个格子上时都只能向下走或者向右走,在当前格子上有两种走法,
 * 而当到达边界处时,比如走到最下面一行格子或者最右边一列格子时,只能一路向右或向下走,这时从当前格子走到最后只能有一种走法。
 */
public class _02振兴中华 {
    public static void main(String[] args) {
        int ans = f(0, 0);
        System.out.println(ans);//35
    }
    
    private static int f(int x, int y) {//变化(坐标在变)
        if (x == 3||y == 4) {//出口(走到边界只有1种走法)
            return 1;
        }
        return f(x + 1, y) + f(x, y + 1);//重复(没有走到边界,有两种走法,相加)
    }
}
 

import java.math.BigInteger;

/*
 * 梅森素数如果一个数字的所有真因子之和等于自身,则称它为“完全数”或“完美数”
 * 例如:6 = 1 + 2 + 3
 * 28 = 1 + 2 + 4 + 7 + 14
 * 早在公元前300多年,欧几里得就给出了判定完全数的定理:
 * 若 2^n - 1 是素数,则 2^(n-1) * (2^n - 1) 是完全数。
 * 其中 ^ 表示“乘方”运算,乘方的优先级比四则运算高,例如:2^3 = 8, 2 * 2^3 = 16, 2^3-1 = 7
 * 但人们很快发现,当n很大时,判定一个大数是否为素数到今天也依然是个难题。
 * 因为法国数学家梅森的猜想,我们习惯上把形如:2^n - 1 的素数称为:梅森素数。
 * 截止2013年2月,一共只找到了48个梅森素数。 新近找到的梅森素数太大,以至于难于用一般的编程思路窥其全貌,所以我们把任务的难度降低一点:
 * 1963年,美国伊利诺伊大学为了纪念他们找到的第23个梅森素数 n=11213,在每个寄出的信封上都印上了“2^11213-1 是素数”的字样。
 * 2^11213 - 1 这个数字已经很大(有3000多位),请你编程求出这个素数的十进制表示的最后100位。
 * 
 * 思路
 * 运用API中的BigInteger类
 * 在Java中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类。
 * 这两个类用于高精度计算,其中BigInteger 类是针对整型大数字的处理类,而 BigDecimal 类是针对大小数的处理类。
 * 
 * 1.java.math.BigInteger.valueOf(long value)方法
 *   返回一个BigInteger,其值等于作为参数传递的long的值。
 *   该方法是静态方法,因此不需要使用此方法创建BigInteger类的对象。
 *   我们可以通过BigInteger.valueOf(long value)代码调用此函数。
 *   
 * 2.基本运算
 * 返回值为BigInteger类型
 * add()        加
 * subtract()    减
 * multiply()    乘
 * divide()        除
 * mod()        取模
 * remainder()    求余
 * pow()        平方
 * abs()        绝对值
 * negate()        相反数
 * 
 * 3.比较大小
 * compareTo()返回一个int型数据:1 大于; 0 等于; -1 小于
 * max(),min():分别返回大的(小的)那个BigInteger数据
 * 
 * 4.常量
 * ZERO,ONE,TEN 返回值为BigInteger类型
 * 
 * 5.字符串方法
 * public String substring(int beginIndex)
 * public String substring(int beginIndex, int endIndex)
 * beginIndex -- 起始索引(包括), 索引从 0 开始。
 * endIndex -- 结束索引(不包括)。
 */
public class _03梅森素数 {
    public static void main(String[] args) {
        BigInteger x = BigInteger.valueOf(2).pow(11213).subtract(BigInteger.ONE);//2^11213-1
        String s = x.toString();//转为字符串
        int length = s.length();//长度
        String ans = s.substring(length - 100);//最后100位
        System.out.println("最后" + ans.length() + "位是" + ans);//输出
        //8586718527586602439602335283513944980064327030278104224144971883680541689784796267391476087696392191
    }
}

/*
 * 小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店
 * 其标价都是4位数字(即千元不等)。
 * 小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了
 * 这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0都可以。
 * 这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:1958 倒着挂就是:8561,差了几千元啊!!
 * 当然,多数情况不能倒读,比如,1110 就不能倒过来,因为0不能作为开始数字。
 * 有一天,悲剧终于发生了。某个店员不小心把店里的某两个价格牌给挂倒了。并且这两个价格牌的电视机都卖出去了!
 * 庆幸的是价格出入不大,其中一个价牌赔了2百多,另一个价牌却赚了8百多,综合起来,反而多赚了558元。
 * 请根据这些信息计算:赔钱的那个价牌正确的价格应该是多少?
 * 
 * 思路
 * 1.枚举四位数,简单筛选
 * 2.将其颠倒,和原价做差
 * 3.将赔2百多的放入一个集合,将赚8百多的放入一个集合
 * 4.遍历两个集合,检查是否相加为558
 * 
 * 相关方法
 * 1.contains() 方法用于判断字符串中是否包含指定的字符或字符串
 * 2.continue 语句是跳过循环体中剩余的语句而强制执行下一次循环,其作用为结束本次循环
 * 3.parseInt() 方法用于将字符串参数作为有符号的十进制整数进行解析
 * 4.charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1
 */

import java.util.ArrayList;

public class _04颠倒的价牌 {
    public static void main(String[] args) {
        //创建集合,保存原价与差价
        ArrayList<Price> a1 = new ArrayList<>();
        ArrayList<Price> a2 = new ArrayList<>();
        
        //1.枚举四位数,简单筛选
        for(int i = 1000;i < 10000;i++) {
            String s = i + "";//转为字符串
            3,4,7不能颠倒,直接结束本次循环
            if (s.contains("3") || s.contains("4") || s.contains("7")) {
                continue;
            }
            //2.将其颠倒,和原价做差
            String res = reverse(s);//颠倒原价
            int i1 = Integer.parseInt(res);//转为int
            int minus = i1 - i;//颠倒价-原价
            //3.将赔2百多的放入一个集合,将赚8百多的放入一个集合
            if (minus < -200 && minus > -300) {//赔了2百多
                a1.add(new Price(i, minus));
            }
            if (minus < 900 && minus > 800) {//赚了8百多
                a2.add(new Price(i, minus));
            }
        }
        
        //遍历两个集合,检查是否相加为558
        for (Price price1 : a1) {
            for (Price price2 : a2) {
                if (price1.minus + price2.minus == 558) {//多赚558元
                    System.out.println("原价=" + price1.p + "  颠倒价-原价=" + price1.minus);
                    System.out.println("原价=" + price2.p + "  颠倒价-原价=" + price2.minus);
                    //答案为9088
                }
            }
        }
    }

    //编写reverse方法,实现颠倒原价
    private static String reverse(String s) {
        //创建一个大小为s.length的字符数组
        char[] chars = new char[s.length()];
        //遍历,j作为索引,将颠倒的价格保存在字符数组中
        for(int i = s.length() - 1,j = 0;i >= 0;i--,j++) {
            char c = s.charAt(i);
            //6颠倒成9,9颠倒成6,其他数字颠倒不变
            if (c == '6') {
                chars[j] = '9';
            }else if (c == '9') {
                chars[j] = '6';
            }else {
                chars[j] = c;
            }
        }
        //返回
        return new String(chars);
    }
    
    private static class Price{
        int p;//原价
        int minus;//颠倒价-原价
        //构造器
        public Price(int p, int minus) {
            this.p = p;
            this.minus = minus;
        }
    }
}

/*
 * 三部排序
 * 一般的排序有许多经典算法,如快速排序、希尔排序等。
 * 但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。
 * 比如,对一个整型数组中的数字进行分类排序:
 * 使得负数都靠左端,正数都靠右端,0在中部。注意问题的特点是:负数区域和正数区域内并不要求有序。可以利用这个特点通过1次线性扫描就结束战斗!!
 * 以下的程序实现了该目标。
    static void sort(int[] x)
    {
        int p = 0;
        int left = 0;
        int right = x.length-1;
        
        while(p<=right){
            if(x[p]<0){
                int t = x[left];
                x[left] = x[p];
                x[p] = t;
                left++;
                p++;
            }
            else if(x[p]>0){    
                int t = x[right];
                x[right] = x[p];
                x[p] = t;
                right--;            
            }
            else{ 
             --------------------//填空
            }
        }
    }
 * 如果给定数组:
 * 25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0
 * 则排序后为:
 * -3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25
 */
public class _05三部排序 {
     static void sort(int[] x)
        {
            int p = 0;
            int left = 0;
            int right = x.length-1;
            
            while(p<=right){
                if(x[p]<0){//元素小于0,将元素和left位置元素交换,left,p后移
                    int t = x[left];
                    x[left] = x[p];
                    x[p] = t;
                    left++;
                    p++;
                }
                else if(x[p]>0){//元素大于0,将元素和right位置元素交换,right前移
                    int t = x[right];
                    x[right] = x[p];
                    x[p] = t;
                    right--;            
                }else{//元素等于0,不交换,直接让p后移
                    p++;
                }
            }
        }
     //验证
     public static void main(String[] args) {
        int[] arr = {25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0};
        sort(arr);
        for (int i : arr) {
            System.out.print(i + " ");//-3 -2 -16 -5 0 0 0 21 19 33 25 16 18 25
        }
    }
}
 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php socket说明 stream流说明

socket说明 我们都知道通过IP&#xff0c;端口等可以实现两台机器之间的数据互通&#xff0c;但具体要怎么操作&#xff0c;系统给我们提供了socket接口&#xff0c;通过调用socket函数就可以实现互通。php的socket扩展和C本身的非常相似&#xff0c;如果找不到php相关的资料&…

[附源码]SSM计算机毕业设计中小学微课学习系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【C++】日期类的实现

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《吃透西嘎嘎》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;前言&…

MySQL8.0优化 - 事务的隔离级别

文章目录学习资料事务的隔离级别脏读、不可重复读、幻读脏读&#xff08;Dirty Read&#xff09;不可重复读&#xff08;Non-Repeatable Read&#xff09;幻读&#xff08;Phantom&#xff09;SQL中的四种隔离级别读未提交&#xff08;READ UNCOMMITTED&#xff09;读已提交&am…

北京化工大学数据结构2022/11/17作业 题解

(7条消息) 食用前须知&#xff08;阅读并同意后在食用其他部分&#xff09;_lxrrrrrrrr的博客-CSDN博客 看完进来哈 目录 问题 A: 邻接矩阵存储的图&#xff0c;节点的出度和入度计算(附加代码模式) 问题 B: 算法7-12&#xff1a;有向无环图的拓扑排序 问题 C: 有向图是否存…

剪枝算法:通过网络瘦身学习高效卷积网络

摘要 原文链接&#xff1a;https://arxiv.org/abs/1708.06519 深度卷积神经网络(CNNs)在现实世界中的应用很大程度上受到其高计算成本的阻碍。在本文中&#xff0c;我们提出了一种新的cnn学习方案&#xff0c;以同时减小模型的尺寸;2)减少运行时内存占用;3)在不影响精度的前…

[附源码]java毕业设计企业职工福利发放管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

WPF TreeView数据回填

这一期简单的说一下这个TreeView的数据回填&#xff0c; 上图是查询类型数据 上图是服务端的数据传递&#xff0c; 从数据库对应的查询出的数据传到服务端然后再传到客户端 上图就是在客户端后台启用刷新中的代码&#xff0c; DefaultView 获取自定义的视图 ItemsSource 获取…

如何在两个相关泛型类之间创建类似子类型的关系

本文正在参加「金石计划 . 瓜分6万现金大奖」 哈喽大家好&#xff0c;我是阿Q&#xff01; 事情是这个样子的...... 对话中的截图如下&#xff1a; 看了阿Q的解释&#xff0c;你是否也和“马小跳”一样存在疑问呢&#xff1f;请往&#x1f447;看 我们都知道在java中&#x…

领英高效开发客户方法(建议收藏)

领英高效开发客户 有效使用linkedIn领英&#xff0c;充分利用其人脉来为我们外贸人开发客户服务&#xff0c;我们也能获得外贸业-务更多更好机遇&#xff0c;扩大自己的外贸人脉圈。 在这里和大家分享一下&#xff0c;如何利用好领英linkedIn&#xff0c;轻松免-费地开发国外客…

深度学习入门(四十二)计算机视觉——目标检测和边界框

深度学习入门&#xff08;四十二&#xff09;计算机视觉——目标检测和边界框前言计算机视觉——目标检测和边界框课件图片分类和目标检测边缘框目标检测数据集总结教材1 边界框2 小结前言 核心内容来自博客链接1博客连接2希望大家多多支持作者 本文记录用&#xff0c;防止遗忘…

m基于MATLAB数字调制解调仿真,包括ASK,FSK,DPSK及MDPSK,对比误码率

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 振幅键控&#xff08;也称幅移键控&#xff09;&#xff0c;记做ASK,或称其为开关键控&#xff08;通断键控&#xff09;&#xff0c;记做OOK 。二进制数字振幅键控通常记做2ASK。 对于振…

Spring Cloud(十一):Spring Cloud Security Oauth2

OAuth2 登录历程 basic 用户名&#xff1a;密码session cookietokenjwt 登录流程分析&#xff1a; https://www.processon.com/view/link/60a32e7a079129157118740f 微信开发平台文档&#xff1a; https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Logi…

(2)paddle---简单线性回归和波士顿房价预测

1、参考地址 &#xff08;1&#xff09;blibli网站地址 251-03_PaddlePaddle求解线性模型_dec_哔哩哔哩_bilibili &#xff08;2&#xff09;波士顿数据集介绍参考了 机器学习:波士顿房价数据集_mjiansun的博客-CSDN博客 2、简单线性回归 &#xff08;1&#xff09;测试一…

上海亚商投顾:沪指失守3100点 教育板块逆势大涨

上海亚商投顾前言&#xff1a;无惧大盘大跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪大小指数今日走势分化&#xff0c;沪指震荡调整&#xff0c;尾盘再度失守3100点&#xff0c;创业板指盘中涨超1%&am…

定制activemq_RPM包,注册系统服务并开机自启

rpmbuild命令用于创建软件的二进制包和源代码包。 1.准备环境 系统&#xff1a;Centos7 安装所需编译环境&#xff1a; # yum install epel-release -y # yum install rpmdevtools rpm-build gcc make tcl jemalloc -y 2.提前编译安装redis&#xff0c;此处以activemq-5…

nodejs学习week01

说明&#xff1a;学习nodejs之气那应该掌握html&#xff0c;css&#xff0c;JavaScript等前端基础技术 目录 一、什么是nodejs 二、nodejs的内部模块 1.fs文件系统模块 2.path路径模块 3.http服务器模块 三、module.exports对象 四、时间格式化 1.使用JavaScript的方…

Python自动化运维之一(Python入门)

Python简介 python是吉多范罗苏姆发明的一种面向对象的脚本语言&#xff0c;可能有些人不知道面向对象和脚本具体是什么意思&#xff0c;但是对于一个初学者来说&#xff0c;现在并不需要明白。大家都知道&#xff0c;当下全栈工程师的概念很火&#xff0c;而Python是一种全栈的…

docker-compose模板文件、命令的使用

docker-compose官网 一、docker-compose的命令 1、up(启动) 格式为 docker-compose up [options] [SERVICE…] 该命令十分强大&#xff0c;它将尝试自动完成包括构建镜像&#xff0c;&#xff08;重新&#xff09;创建服务&#xff0c;启动服务&#xff0c;并关联服务相关容器…

FAQ是什么?该如何编辑FAQ?

“FAQ”这个关键词可能很多人都见过&#xff0c;但是如果不是行业内的人&#xff0c;大概还不知道它的含义&#xff0c;所以本文将介绍 FAQ和 FAQ文档的编写。 “FAQ”是中文意思&#xff0c;意思是“常见问题解答”或“帮助中心”。研究显示&#xff0c;客户服务支持每天要花…