第14届蓝桥杯大赛——真题训练第七天

目录

第一题:特殊日期  

问题描述

答案提交

运行限制

题目分析

题目代码

第二题:重合次数

问题描述

答案提交

运行限制

题目分析

题目代码


第一题:特殊日期  

问题描述

对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 19001900 年 11 月 11 日至 99999999 年 1212 月 3131 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。

例如,20222022 年 1111 月 1313 日满足要求,因为 2+0+2+2=(1+1)+(1+3)2+0+2+2=(1+1)+(1+3) 。

请提交满足条件的日期的总数量。

答案提交

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

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

题目分析

判断闰年+位运算+字符串转整数 

题目代码

/**
 * @author 小卢先冲
 * @date 2023/3/21 23:45 
 */
public class 特殊日期 {
    public static void main(String[] args) {
        int[] rn = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int[] pn = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int m = 1;
        int day = 1;
        int count = 0;
        for (int year = 1900; year < 10000; year++) {
            String syear = year + "";
            //计算年位和
            int sumyear = 0;//每次统计新的年月日都要把位和赋0
            for (int i = 0; i < syear.length(); i++) {
                sumyear += Integer.parseInt(syear.charAt(i) + "");
            }
            if (isRunnian(year)) {//判断是否为闰年
                for (m = 1; m <= 12; m++) {
                    String sm = m + "";
                    //计算月位和
                    int summ = 0;
                    for (int i = 0; i < sm.length(); i++) {
                        summ += Integer.parseInt(sm.charAt(i) + "");
                    }
                    for (day = 1; day <= rn[m]; day++) {
                        String sdata = day + "";
                        int sumday = 0;
                        //计算日位和
                        for (int i = 0; i < sdata.length(); i++) {
                            sumday += Integer.parseInt(sdata.charAt(i) + "");
                        }
                        if (sumyear == sumday + summ) {
                            count++;
                        }
                    }
                }
            } else {
                for (m = 1; m <= 12; m++) {
                    String sm = m + "";
                    //计算月位和
                    int summ = 0;
                    for (int i = 0; i < sm.length(); i++) {
                        summ += Integer.parseInt(sm.charAt(i) + "");
                    }
                    for (day = 1; day <= pn[m]; day++) {
                        String sdata = day + "";
                        int sumday = 0;
                        //计算日位和
                        for (int i = 0; i < sdata.length(); i++) {
                            sumday += Integer.parseInt(sdata.charAt(i) + "");
                        }
                        if (sumyear == sumday + summ) {
                            count++;
                        }
                    }
                }
            }

        }
        System.out.println(count);
    }

    public static Boolean isRunnian(int year) {
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            return true;
        }
        return false;
    }
}

第二题:重合次数

问题描述

在同一天中, 从上午 6 点 13 分 22 秒到下午 14 点 36 分 20 秒, 钟表上的 分针和秒针一共重合了多少次?

注意时针、分针、秒针都围绕中心敳匀速运动。

答案提交

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

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 512M

题目分析

对日期的处理 

s++要写在if(s==m)前面

题目代码

public class 重合次数 {
    public static void main(String[] args) {
        int h = 6;
        int m = 13;
        int s = 22;
        int count = 0;
        while (true) {
            if (h == 14 && m == 36 && s == 20) {
                System.out.println(count);
                break;
            }
            s++;

            if (m == s) count++;
            if (s == 60) {
                m++;
                s = 0;
                if (m == 60) {
                    h++;
                    m = 0;
                }
            }
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是第十四蓝桥杯Python组真题的部分内容: 一、选择题(每题5分,共40分) 1. 下列哪个不是Python的内置数据类型? A. int B. float C. char D. str 答案:C 2. 下列哪个不是Python的保留字? A. and B. or C. not D. xor 答案:D 3. 下列哪个不是Python的标准模块? A. os B. sys C. math D. timeit 答案:D 4. 下列哪个Python库可以用于科学计算? A. NumPy B. SciPy C. Matplotlib D. All of the above 答案:D 5. 下列哪个Python库可以用于机器学习? A. TensorFlow B. Keras C. PyTorch D. All of the above 答案:D 6. 下列哪个Python库可以用于爬虫? A. Requests B. BeautifulSoup C. Scrapy D. All of the above 答案:D 7. 下列哪个Python库可以用于图像处理? . OpenCV B. Pillow C. Scikit-image D. All of the above 答案:D 8. 下列哪个Python库可以用于游戏开发? A. Pygame B. Panda3D C. PyOpenGL . All of the above 答案:D 二、编程题(每题20分,共60分) 1. 编写一个Python程序,输入一个字符串,将其中的大写字母转换为小写字母,将其中的小写字母转换为大写字母,然后输出转换后的字符串。 2. 编写一个Python程序,输入一个整数n,输出n的阶乘。 3. 编写一个Python程序,输入一个字符串,判断该字符串是否为回文字符串。如果是回文字符串,则输出True,否则输出False。 以上是部分内容,完整的第十四蓝桥杯Python组真题可以在蓝桥杯官网上找到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DaoJis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值