蓝桥杯真题day1

文章展示了如何编写程序检测票据系统中的断号和重号问题,并演示了通过字符串处理找出特殊年份的数量。
摘要由CSDN通过智能技术生成

 题目:

某涉密单位下发了某种票据,并要在年终全部收回。

题目描述

每张票据有唯一的 ID 号,全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选定的。因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造成了某个 ID 断号,另外一个 ID 重号。

你的任务是通过编程,找出断号的 ID 和重号的 ID。

数据保证断号不可能发生在最大和最小号。

输入格式

一个整数 N(N<100)N(N<100) 表示后面数据行数,接着读入 N 行数据,每行数据长度不等,是用空格分开的若干个(不大于 100100 个)正整数(不大于 105105),每个整数代表一个 ID 号。

输出格式

要求程序首先输入要求程序输出 11 行,含两个整数 m,n,用空格分隔,其中,m 表示断号 ID,n 表示重号 ID。

输入输出样例

输入 #1复制

2
5 6 8 11 9
10 12 9

输出 #1复制

7 9

输入 #2复制

6
164 178 108 109 180 155 141 159 104 182 179 118 137 184 115 124 125 129 168 196
172 189 127 107 112 192 103 131 133 169 158
128 102 110 148 139 157 140 195 197
185 152 135 106 123 173 122 136 174 191 145 116 151 143 175 120 161 134 162 190
149 138 142 146 199 126 165 156 153 193 144 166 170 121 171 132 101 194 187 188
113 130 176 154 177 120 117 150 114 183 186 181 100 163 160 167 147 198 111 119

输出 #2复制

105 120

思路:直接模拟就能过了,这里我用了一个集合,来判断重号

代码:

n = int(input())
lis = []
a1, a2 = 0, 0
seen = set()
for i in range(n):
    x = list(map(int, input().split()))  # 将map函数的结果转换为列表
    for j in range(len(x)):
        num = x[j]
        if num in seen:
            a2 = num
        else:
            seen.add(num)
        lis.append(num)

lis.sort()
for i in range(1, len(lis)):
    if lis[i] - lis[i - 1] == 2:
        a1 = lis[i - 1] + 1

print(a1, a2)
反省与思考:我在一开始写缺号的判断条件时写的代码语句为if lis[i]-lis[i-1]!=1,导致了判断缺号出现了错误

题目二:特殊年份

题目描述

今年是 2021 年,2021 这个数字非常特殊, 它的千位和十位相等, 个位比百位大 11,我们称满足这样条件的年份为特殊年份。

输入 55 个年份,请计算这里面有多少个特殊年份。

输入格式

输入 55 行,每行一个 44 位十进制数(数值范围为 10001000 至 99999999),表示一个年份。

输出格式

输出一个整数,表示输入的 55 个年份中有多少个特殊年份。

输入输出样例

lis = []
ans = 0
# 输入5个数字到列表中
for _ in range(5):
    lis.extend(map(int, input().split()))

# 遍历列表中的数字
for i in lis:
    a = i // 1000  # 千位数字
    b = (i // 100) % 10  # 百位数字
    c = (i // 10) % 10  # 十位数字
    d = i % 10  # 个位数字

    if a == c and b == (d + 1):
        ans += 1
print(ans)

输入 

2019
2021
1920
2120
9899
思路:我这边首先想到的就是通过//(整除)%(取余)来求解每个位置上的数字,这是显而易见的。但是如果数字逐渐增大,这种方法就行不通了。这里我提出一种新的思路,将输入的数字转换成字符串,去遍历这个年份的数字来判断是否是特殊年份。 

心得:在题目一中,判断是否重号,可以采用一个集合来添加集合中没有出现过的元素,再使用一个判断语句来判断是否在集合中出现了重复的元素,如果出现了就把这个重复的元素标记出来

  • 29
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值