蓝桥杯寒假集训第九天(回文日期)

news2024/11/17 11:32:38

没有白走的路,每一步都算数🎈🎈🎈

题目描述:

输入一行数据,这个数据是从10000101到89991231,输出这个数据后面的第一个回文数,以及输出第一个ABABBABA型的回文数。

注意:这两个回文数可以相同。这个题目的题意应该说明一下。

输入描述:

第一行:

第一行输入一个八位数

输出描述:

输出两个数据,一个是这个数字后面的回文数,样式没有要求。

另外一个是这个数字后面的回文数,但是样式有要求。要求格式位ABABBABA型的数字。

样例输入输出:

样例输入:

20200202
样例输出:

20211202

21211212

算法思路:

由于年份很少,题目只给出8位的数字,我们构建出所有的回文年份的前面四位数字。反正用的是模拟,接着用for循环遍历所有的前面的四位数字,判断这个前面四个数字所衍生出来的回文数,是不是大于这个输入的数据,如果是,就输出。第二个数,就是直接在if条件加一个限制。

 找到第一个回文数

思路:先把前面的四位数提取出来,之后用暴力法,找到我们的数组中第一个大于等于这个四位数的数组的下标,之后输出这个数据。

 题目仍然提示有部分代码没有通过,看到这里出现了重复的情况

不断测试,找到bug

 

 

 这里要求的是ABABBABA,那么11111111不应该存在,if条件出错。改完之后,仍旧是90%的通过率,所以只能采取对拍操作,把AC的代码和自己的代码的每个结果输出,做个对比。

import os
import sys
##while 1:
n = int(input())
Y = [10,11,12,13,20,21,22,30,31,32,40,41,42,50,51,52,60,61,62,70,71,72,80,81,82,90,91,92]
M = [1,10,11,20,21,30,40,50,60,70,80,90]
    ##x = len(Y)*len(M)*[0]
    ##print(len(Y))
    ##print(x)
x = []
y = [0,0,0,0]
ans = ''
for i in range(len(Y)):
    if Y[i]==13:
        for j in range(len(M)):
            if M[j] == 11 or M[j] == 20 or M[j]==40 \
               or M[j]==60 or M[j]== 90:
                x.append(0)
            else:
                x.append(Y[i]*100+M[j])
    elif Y[i]==82:
        for j in range(len(M)):
            if M[j]==20:
                x.append(0)
            else:
                x.append(Y[i]*100+M[j])
    else:
        for j in range(len(M)):
            x.append(Y[i]*100+M[j])
##print(x)
##print(len(x))
##for i in range(len(x)):
##    print(x[i],end = ' ')
##    if (i+1)%10==0:
##        print()

        
for i in range(len(x)):
##    print(n//10000)
    if x[i]>(n//10000):
##        print(n//1000)
        tmp = x[i]
        ans+=(str(x[i]))
##        x[i] = 0
        for j in range(4):
            y[j] = tmp%10
            tmp = tmp//10
            ans+=str(y[j])
        print(ans)
        break
ans1 = ''
for i in range(len(x)):
    a = x[i]%10
    b = x[i]//10%10
    c = x[i]//100%10
    d = x[i]//1000
    if x[i]>(n//10000) and a==c and b == d and b!=c:
        tmp = x[i]
        ans1+=(str(x[i]))
        for j in range(4):
            y[j] = tmp%10
            tmp = tmp//10
            ans1+=str(y[j])
        if ans1!=ans:
            print(ans1)
            break

 对拍

正确的AC代码

错误的代码

 

 修改之后仍旧出先新错误

 再次修改

这里不应改会出现0的,因为存在82200228,最开始想到是8220的2月份有29天,所以就把这里设为0,结果翻车.

正确的代码                                                     错误的代码

 

 仍然出错,这里我想到之前的错误可能会又犯,一查,还真是,变量一多,if,else就特别容易写错。

正确的代码                                                         错误的代码

 原因:

 AC代码

 原始版

import os
import sys
##while 1:
n = int(input())
Y = [10,11,12,13,20,21,22,30,31,32,40,41,42,50,51,52,60,61,62,70,71,72,80,81,82,90,91,92]
M = [1,10,11,20,21,30,40,50,60,70,80,90]
    ##x = len(Y)*len(M)*[0]
    ##print(len(Y))
    ##print(x)
x = []
y = [0,0,0,0]
ans = ''
for i in range(len(Y)):
    if Y[i]==13:
        for j in range(len(M)):
            if M[j] == 11 or M[j] == 20 or M[j]==40 \
               or M[j]==60 or M[j]== 90:
                x.append(0)
            else:
                x.append(Y[i]*100+M[j])
##    elif Y[i]==82:
##        for j in range(len(M)):
##            if M[j]==20:
##                x.append(0)
##            else:
##                x.append(Y[i]*100+M[j])
    else:
        for j in range(len(M)):
            x.append(Y[i]*100+M[j])
##print(x)
##print(len(x))
##for i in range(len(x)):
##    print(x[i],end = ' ')
##    if (i+1)%10==0:
##        print()

        
for i in range(len(x)):
##    print(n//10000)
    if x[i]>=(n//10000):
##        print(n//1000)
        tmp = x[i]
        ans+=(str(x[i]))
##        x[i] = 0
        for j in range(4):
            y[j] = tmp%10
            tmp = tmp//10
            ans+=str(y[j])
        if int(ans)>n:
            print(ans)
            break
        else:
            ans = ''
##print(x)
ans1 = ''
for i in range(len(x)):
    a = x[i]%10
    b = x[i]//10%10
    c = x[i]//100%10
    d = x[i]//1000
    if x[i]>=(n//10000) and a!=b and b == d and a==c:
        tmp = x[i]
        ans1+=(str(x[i]))
        for j in range(4):
            y[j] = tmp%10
            tmp = tmp//10
            ans1+=str(y[j])
        if int(ans1)>n:
            print(ans1)
            break
        else:
            ans1 = ''

修正的代码

import os
import sys
n = int(input())
Y = [10,11,12,13,20,21,22,30,31,32,40,41,42,50,51,52,60,61,62,70,71,72,80,81,82,90,91,92]
M = [1,10,11,20,21,30,40,50,60,70,80,90]
x = []
y = [0,0,0,0]
ans = ''
for i in range(len(Y)):
    if Y[i]==13:
        for j in range(len(M)):
            if M[j] == 11 or M[j] == 20 or M[j]==40 \
               or M[j]==60 or M[j]== 90:
                x.append(0)
            else:
                x.append(Y[i]*100+M[j])
    else:
        for j in range(len(M)):
            x.append(Y[i]*100+M[j])
        
for i in range(len(x)):
    if x[i]>=(n//10000):
        tmp = x[i]
        ans+=(str(x[i]))
        for j in range(4):
            y[j] = tmp%10
            tmp = tmp//10
            ans+=str(y[j])
        if int(ans)>n:
            print(ans)
            break
        else:
            ans = ''
ans1 = ''
for i in range(len(x)):
    a = x[i]%10
    b = x[i]//10%10
    c = x[i]//100%10
    d = x[i]//1000
    if x[i]>=(n//10000) and a!=b and b == d and a==c:
        tmp = x[i]
        ans1+=(str(x[i]))
        for j in range(4):
            y[j] = tmp%10
            tmp = tmp//10
            ans1+=str(y[j])
        if int(ans1)>n:
            print(ans1)
            break
        else:
            ans1 = ''

彩蛋

发现蓝桥杯这道题目的测试数据还是有一点少的。举一个小案例说明:

 

每日一句

摘自《《晚熟的人》》:

晚熟的人,一般简单又纯真,看起来傻乎乎,却傻人有傻福,有着谁也抢不走的人间幸福。

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

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

相关文章

跟着博主一起刷题:《剑指offer》(第五天)

跟着博主一起刷题 这里使用的是题库: https://leetcode.cn/problem-list/xb9nqhhg/?page1 目录剑指 Offer 37. 序列化二叉树剑指 Offer 38. 字符串的排列剑指 Offer 40. 最小的k个数剑指 Offer 37. 序列化二叉树 剑指 Offer 37. 序列化二叉树 序列化: …

windows下mmclassification安装教程

文章目录mmclassification版本0.23.1一.官方安转教程二.安装教程mmclassification版本0.23.1 一.官方安转教程 官网 二.安装教程 创建conda环境 conda create --name openmmlab python3.8 -y进入创建的环境 conda activate openmmlab安转pytorcch conda install pytorch torc…

CSS知识点精学5-定位装饰

目录 一.定位 1.定位的基本介绍 2.定位的基本使用 3.静态定位 4.相对定位 5.绝对定位 6.子绝父相 a.优化学成网站推荐课程卡片 b.绝对定位盒子的居中(案例) 8.固定定位 9.元素的层级关系 二.装饰 1.垂直对齐方式 2.光标类型 3…

计算机网络实验报告

计算机网络实验报告 文章目录计算机网络实验报告一、验证性实验ipconfig实作一实作二问题ping实作一实作二问题tracert实作一问题一问题二问题三ARP实作一实作二实作三问题DHCP实作一问题netstat实作一实作二DNS实作一实作二实作三问题cache实作二二、Wireshark 实验数据链路层…

果蔬消毒机行业市场深度监测及发展趋势预测分析

2023-2029年中国果蔬消毒机行业市场深度监测及发展趋势预测报告报告编号:1691217本报告著作权归博研咨询所有,未经书面许可,任何组织和个人不得以任何形式复制、传播或输出中华人民共和国境外。任何未经授权使用本报告的相关商业行为都将违反…

STP生成树基础,一个难点

技术背景:二层交换机网络的冗余性与环路 二层环路带来的问题(三层环路,ttl跳数达到一定次数会丢弃) 典型问题 1:广播风暴不停的在接口内复制转发广播 2:MAC地址漂移 sw1接口1与2,对sw3的接收ma…

CentOS7.x下部署oracle19c环境

CentOS7.x下部署oracle19c环境 文章目录CentOS7.x下部署oracle19c环境前言一、环境准备工作1.1、虚拟机搭建及关闭防火墙和selinux1.2、RPM包预安装1.3、检查安装情况用户组已创建完成1.4、创建目录1.5、修改/etc/hosts 文件1.6、设置oracle口令1.7、设置环境变量1.8、将oracle…

[LeetCode周赛复盘] 第 327 场周赛20230108

[LeetCode周赛复盘] 第 327 场周赛20230108 一、本周周赛总结二、 [Easy] 6283. 正整数和负整数的最大计数1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6285. 执行 K 次操作后的最大分数1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6284. 使字符串总不同字符的数目相等…

10、ThingsBoard-租户

1、租户的概念 目前,有很多的系统都是以多租户的形式来设计的,目的是为了实现数据隔离,thingsboard中也是如此。但是thingsboard把租户在抽象成了一种实体,后续还会讲解其它的实体;用官方的语言解释租户:您可以将租户视为一个单独的业务实体:它是拥有或生产设备和资产的…

Java中ThreadLocal说明

1、ThreadLocal是什么 ThreadLocal,即线程变量,是一个以ThreadLocal对象为键、任意对象为值的存储结构。 这个结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。 ——《Java并发编程艺术》如…

GrapeCity Documents Data Viewer[GcDataViewer] Crack

GrapeCity Documents Data Viewer,简称GcDataViewer,是一个统一的基于 JavaScript 的客户端查看器,旨在加载和预览与数据相关的所有流行文档格式。目前,查看器支持 XLSX、SSJSON 和 CSV 格式。除了仅加载数据文件外,数…

卷径计算(厚度累计法/膜厚积分法)

卷径计算的截面积法请参看下面的文章链接: 卷径计算详解(通过卷绕的膜长和膜厚进行计算)_RXXW_Dor的博客-CSDN博客有关卷绕+张力控制可以参看专栏的系列文章,文章链接如下:变频器简单张力控制(线缆收放卷应用)_RXXW_Dor的博客-CSDN博客_收放卷应用张力控制的开闭环算法,…

“/ArcGIS/services”应用程序中的服务器错误

本文迁移自本人网易博客,写于2013年1月5日No Content说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: No Content源错误…

第三章 图形初阶

我曾经多次向客户展示以数字和文字表示的、精心整理的统计分析结果,得到的只是客户呆滞的眼神,尴尬得房间里只能听到鸟语虫鸣。然而,当我使用图形向相同的用户展示相同的信息时,他们往往会兴致盎然,甚至豁然开朗。我经…

jQuery控制元素的显示与隐藏(三种方式对比)

hide和show hide:是$(“.类名”)或$(“#标签名”)或$(“标签名”).hide() show:是$(“.类名”)或$(“#标签名”)或$(“标签名”).show() 元素直接消失,没有任何动态效果 slideToggle 通过控制元素的高度来显示与隐藏,因此会有动画效果。slideToggle如果…

RHCE ansible 作业

1、jinjia2模板 hosts.j2,内容如下(主机名和ip地址使用变量): Welcome to 主机名 !(比如servera.lab.example.com) My ip is ip地址. 要求在所有受管主机生成文件:/etc/welcome.txt。 2、角色部分 根据下列…

【Java】生产者消费者模型

【Java】生产者消费者模型 0x1 前言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者…

设计模式的简单整理

单例的几种方式。 public class Single{private static volatile Single single;private single(){}public static Single getSingle(){if(single null){synchronized(Single.class){if(single null){single new Single();}}}return single;} } 在dcl中volatile为了防止指…

你问我答|为什么说数据中心散热迎来拐点?

喜报!      “绿色领跑企业”      近期,戴尔荣获由中环联合认证中心(CEC)颁发的“绿色领跑企业”奖项,这是继“环保产品领跑者”之后的又一殊荣,恭喜戴尔!    作为全球领先的数字化解决方案供应商,戴尔将可持续发展置于一切工作的核心,以智能、高效的解决方案帮助…

scikit-learn 线性回归 LinearRegression 参数详解

scikit-learn 线性回归 LinearRegression 参数详解LinearRegression 参数详解参考文献LinearRegression 参数详解 # 从 sklearn 中引入线性模型模块 from sklearn import linear_model # 建立线性回归对象 reg reg linear_model.LinearRegression(fit_interceptTrue,copy_XTr…