目录
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))