第十二届蓝桥杯第二期模拟赛java组(python)

这篇博客主要介绍了第十二届蓝桥杯第二期模拟赛的部分题目,包括用二进制表示整数的最小位数、找既是4的倍数又是6的倍数的数、递增序列的计数、无向图最少节点数、字符串内部距离计算、平行四边形面积以及时间推算等。每个问题都提供了思路解析。
摘要由CSDN通过智能技术生成

A

小明要用二进制来表示 1 到 10000 的所有整数,要求不同的整数用不同的二进制数表示,请问,为了表示 1 到 10000
的所有整数,至少需要多少个二进制位?
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

思路:
暴力解

def change(num, a):
    s = []
    while num != 0:  # 基本数制转换方法
        sum = num % a
        s.append(sum)
        num = num // a
    _s = s[::-1]
    return ''.join('%d' % i for i in _s)


print(len(change(10000, 2)))

在这里插入图片描述

B

问题描述
  请问在 1 到 2020 中,有多少个数既是 4 的整数倍,又是 6 的整数倍。
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

思路:
暴力解

a = 0
for i in range(1, 2021):
    if i % 4 == 0 and i % 6 == 0:
        a += 1
print(a)

在这里插入图片描述

C

问题描述
  请问有多少个序列满足下面的条件:
  1. 序列的长度为 5。
  2. 序列中的每个数都是 1 到 10 之间的整数。
  3. 序列中后面的数大于等于前面的数。
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
思路:
需要注意5个数字可以重复,用到可重复——combinations_with_replacement

# C
import itertools

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
res = 0
for i in itertools.combinations_with_replacement(list1, 5):
    list2 = list(i)
    if list2[0] <= list2[1] <= list2[2] <= list2[3] <= list2[4]:
        res += 1
print(res)

在这里插入图片描述

D

问题描述
一个无向图包含 2020 条边,如果图中没有自环和重边,请问最少包含多少个结点?
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

思路:
公式:一个有n个顶点的无向连通图最多有n(n-1)/2条边,最少有n-1条边。

res, sums= 1, 0
while sums < 2020:
    sums += res
    res += 1
print(res)

在这里插入图片描述

E

两个字母之间的距离定义为它们在字母表中位置的距离。例如 A 和 C 的距离为 2,L 和 Q 的距离为 5。
对于一个字符串,我们称字符串中两两字符之间的距离之和为字符串的内部距离。   例如:ZOO 的内部距离为 22,其中 Z 和 O
的距离为 11。
请问,LANQIAO 的内部距离是多少?

思路:
ascii码的差值

from itertools import combinations
str = 'LANQIAO'
res = 0
for tpl in combinations(str, 2):
    res += abs(ord(tpl[0])-ord(tpl[1]))
print(res)

在这里插入图片描述

F

问题描述
  给定一个平行四边形的底边长度 l 和高度 h,求平行四边形的面积。
输入格式
  输入的第一行包含一个整数 l,表示平行四边形的底边长度。
  第二行包含一个整数 h,表示平行四边形的高。
输出格式
  输出一个整数,表示平行四边形的面积。(提示:底边长度和高都是整数的平行四边形面积为整数)
样例输入
2
7
样例输出
14
数据规模和约定
  对于所有评测用例,1 <= l, h <= 100。
送分的

n = int(input().strip())
m = int(input().strip())
print(n*m)

G

问题描述
  现在时间是 a 点 b 分,请问 t 分钟后,是几点几分?
输入格式
  输入的第一行包含一个整数 a。
  第二行包含一个整数 b。
  第三行包含一个整数 t。
输出格式
  输出第一行包含一个整数,表示结果是几点。
  第二行包含一个整数,表示结果是几分。
样例输入
3
20
165
样例输出
6
5
样例输入
3
20
175
样例输出
6
15
数据规模和约定
  对于所有评测用例,0 <= a <= 23, 0 <= b <= 59, 0 <= t, t 分钟后还是在当天。
思路:
整一个时钟

a = int(input().strip())
b = int(input().strip())
t = int(input().strip())
hour = t // 60
c = t - hour * 60
if b + c > 60:
    hour2 = (b + c) // 60
    second = (b + c) % 60
    print(a + hour + hour2)
    print(second)
else:
    print(a + hour)
    print(b + c)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值