学习笔记,有些思路代码是看题解和博客
已更新:
1、纸张尺寸(大学B、C组)
2、数位排序(大学B、C组)
3、矩形拼接(研究生组、大学A、C组)
4、GCD(大学C组)
5、峰巢(大学B、C组)
6、消除游戏(研究生组、大学A、B组)
7、质因数个数(研究生组,大学A组)
纸张尺寸(大学B、C组)
1、题目
题目描述
在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm × 841mm,将 A0 纸沿长边对折后为 A1 纸,大小为 841mm × 594mm,在对折的过程中长度直接取下整(实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸,依此类推。 输入纸张的名称,请输出纸张的大小
输入格式
输入一行包含一个字符串表示纸张的名称,该名称一定是 A0、A1、A2、A3、A4、A5、A6、A7、A8、A9 之一。
输出格式
输出两行,每行包含一个整数,依次表示长边和短边的长度。
样例输入
A0
样例输出
1189 841
2、思路
(列表、元组)
可以写一个函数,知道输入数组的数字(第二个数,比如A0的0),就可以得到对应的长和宽,本函数返回值是元组。
对应的长宽可以根据一个for循环来得到,通过观察可知l=w,w=l/2。
在函数的后面写输入、输出就好了。
3、代码
def paper_size(name):
len=int(name[1])#name是字符串,取第二个数值
l,w=1189,841#是0的话就直接返回
for _ in range(len):#是0的话直接不进入循环
l,w=w,l//2
return l,w
name=input().strip()
l,w=paper_size(name)
print(l)
print(w)
数位排序(大学B、C组)
1、题目
题目描述
小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序。当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面。
例如,2022 排在 409 前面,因为 2022 的数位之和是 6,小于 409 的数位之和 13。
又如,6 排在 2022 前面,因为它们的数位之和相同,而 6 小于 2022。
给定正整数 n,m,请问对 1 到 n 采用这种方法排序时,排在第 m 个的元素是多少?
输入格式
输入第一行包含一个正整数 n。
第二行包含一个正整数 m。
输出格式
输出一行包含一个整数,表示答案。
样例输入
13 5
样例输出
3
2、思路
(排序,数位之和)
第一步先写整数各个元素之和,用个函数封装起来。其思路是把整数转换为数组。
第二步是用排序函数sorted还有key,key是表示排序规则的
3、代码
#输入两个整数
n=int(input())