蓝桥杯2022真题:裁纸刀、修剪灌木、刷题统计、纸张尺寸、数位排序、考勤刷卡、卡片、小平方、李白打酒加强版

2023-11-01

目录

1、裁纸刀

2、 修剪灌木

3、刷题统计

4、纸张尺寸

5、数位排序

6、考勤刷卡

7、卡片

8、小平方

9、李白打酒加强版


1、裁纸刀

题目无法截图,看题点击:https://www.lanqiao.cn/problems/?sort=students_count&category_id=3&tags=2022

import os
import sys
# 请在此输入您的代码
print(4+19+20*21)
#4是裁掉边缘多余的纸,19是横着裁19刀,20×21是竖着

2、修剪灌木

import os
import sys
'''
 由于对于一棵树,要么从左往右,要么从右往左修剪,所以规律就是
 自己被修建之后,下一次最长长到自己被修剪的距离的二倍就是最大高度
 所以只需要和左右两端点比较谁更远即可
'''
# 请在此输入您的代码
N = int(input())  #将输入转为整型
for i in range(N):
  l_d = i - 0    #距离左端点的距离
  r_d = N - 1 - i    #距离右端点的距离
  print(2*max(l_d,r_d))

3、刷题统计

import os
import sys
#输入代码
a,b,n = map(int,input().split())   #将输入的a,b,n转换成整型类型
do = a*5 + b*2   #计算出一周总的做题的数量
day = (n//do)*7   #计算出几个整周的天数
n %= do      #剩余的题数,即不用一整周就能解决的
if n <= 5*a:   #剩余的题数,五天能做完
  day += n//a + (0 if n%a == 0 else 1)
#加上天数,如果还有余数,则另外又需要一天去完成
else:     #如果剩余的题数,五天做不完,剩余两天肯定能做完
  day += 5    #先加上之前的五天
  n -= 5*a    #将五天做的题减掉
  days += n//b +(0 if n%b == 0 else 1)
#原理同上一步if
print(day)  

4、纸张尺寸

import os
import sys

s = input()   #获取字符串
index = int(s[1])   #获取纸张序号
a,b = 1189,841
for i in range (index):
  if a<b;    #比较长宽的大小
    a,b = b, a    #如果宽比长要大的话,则转换
    a//=2         #除2向下取整
  else:
    a//=2
print(max(a,b))    #输出长
print(min(a,b))    #输出宽

5、数位排序

#import os
#import sys
n = int(input())   #获取输入的n和m
m = int(input())
a = [i for i in range (1,n+1)]   #创建列表[1,n]
b = [0]*(n+1)    #[0,0,0,0,...,0],n+1个0
for i in range(1,n+1):
  #求i的数位之和
  num = i
  while num != 0:
    b[i] += num % 10
    num //= 10
a.sort(key=lambda x: (b[x],x)  #按照b中的大小,对a排序
print(a[m-1])

6、考勤刷卡

import os
import sys
# 请在此输入您的代码
n = int(input())   #获取输入的人数
list = []
for i in range(n):
  time, id = input().split()    #以空格为分隔符,将时间和ID隔开
  list.append(int(id))      #将ID加入到list列表当中去
list = sorted(set(list))     #set()是将元素无序不重复整理,再进行sorted排序就好了
for i in range(len(list)):
  print(list[i])     #逐个输出

7、卡片

import os
import sys
# 请在此输入您的代码
'''
这题其实核心思想是数学题,n位同学,那么我们就必须要最少有n种组合,才能满足卡片够分
那么1张卡片对应1种、2张卡片对应3种,四张卡片对应6种,可以发现是1+2+3+...+k的情况,所以代码就很简单
'''
n = int(input())  #先得到学生人数
count = 0    #记录此时组合总数
for i in range(1,n+1):
  count += i   #组合数相加
  if count >= n:   #满足情况了
    print(i)
    break     #跳出循环

8、小平方

import os
import sys
# 请在此输入您的代码
n = int(input())
n_half = n / 2   #利用除法运算符算出n的一半
count = 0   #计数
for i in range(1,n):
  res = pow(i,2) % n     #平方取余
  if res < n_half:
    count += 1    #个数加一个
print(count)

9、李白打酒加强版

import os
import sys
# 请在此输入您的代码
#用递归的思想去做
N,M = map(int,input().split())    #映射函数,将输入的两个N、M按照空格分开并且都定义为整型
list = []   #定义一个空列表
def fun(store,flower,wine):
  if store > 0:      #遇到一次店
    fun(store-1,flower,wine*2)
  if flower > 0:   #遇到一次花
    fun(store,flower-1,wine-1)
  if store == 0 and flower == 1 and wine == 1:   #最后一次遇到的是花,正好把酒喝光了,可能性加一
    list.append(1)
  return list
fun(N,M,2)
print(len(list))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯2022真题:裁纸刀、修剪灌木、刷题统计、纸张尺寸、数位排序、考勤刷卡、卡片、小平方、李白打酒加强版 的相关文章

随机推荐