等差数列(python)
题目描述数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数。
现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?
输入描述输入的第一行包含一个整数 N。
第二行包含 N 个整数A1,A2,⋅⋅⋅,AN。(注意 A1 ∼AN 并不一定是按等差数列中的顺序给出)
其中,2≤N≤105,0≤Ai≤109。
输出描述输出一个整数表示答案。
输入输出样例示例
输入
52 6 4 10 20
输出
10
样例说明: 包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、 18、20。
代码实现:N = int(input()) n = list(map(int, input().split()))n.sort() # 排序x = []for i in range(N - 1): # 找到每相邻两个数的差值,即有可能的公差,存入列表 m1 = int(n[i + 1]) m2 = int(n[i]) x.append(m1 - m2)z ...
质数(python)
题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……
请你计算第 2019 个质数是多少?
代码实现:
import mathdef is_prime(n): # 判断传入的数字是否为质数,若为返回True,否则返回False if n == 1: return False for i in range(2, int(math.sqrt(n)) + 1): # 在一般领域,对正整数n,如果用2到 根号n 之间的所有整数去除,均无法整除,则n为质数。 if n % i == 0: return False return Truess_l = [] # 存质数x = 1while len(ss_l) != 2019: # 判断是否有2019个质数 if is_prime(x): # 判断is_prime(x)函数返回的值是否为True,若为True则条件成立,x为质数 s ...
货物摆放(python)
题目描述小蓝有一个超大的仓库,可以摆放很多货物。
现在,小蓝有 n 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。
小蓝希望所有的货物最终摆成一个大的长方体。即在长、宽、高的方向上分别堆 L、W、H 的货物,满足n=L×W×H。
给定 n,请问有多少种堆放货物的方案满足要求。
例如,当 n=4 时,有以下 6 种方案:1×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×1.
请问,当n=2021041820210418 (注意有16 位数字)时,总共有多少种方案?
提示:建议使用计算机编程解决问题。
答案提交这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
参考代码(超时):n = 2021041820210418sum = 0h_list = [] # 创建一个列表存因数for i in range(1, int(pow(n, 0.5)) + 1): # 两个因数中小的那个不会超过原数开根号的值 i ...
递增序列(python)
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这两个字母从左向右看、或者从上向下看是递增的。
例如,如下矩阵中
LANNQIAO
有LN、LN、AN、AN、IO、AO、LQ、AI、NO、NO、AQ、IN、AN 等 13 个 递增序列。注意当两个字母是从左下到右上排列时,从左向右看和从上向下看 是不同的顺序。
对于下面的 30 行 50 列的矩阵,请问总共有多少个递增序列?
VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAGSDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASATDWZAPZRNHTNNGQFZGUGXVQDQAEAHOQEADMWWXFBXECKAVIGPTKTTQFWSWPKRPSMGABDGMGYHAOPPRRHKYZCMFZEDELCALTBSWNTAODXYVHQNDASUFRLYVYWQZUTEPFSFXLTZBMBQETXGXFUEBHGMJK ...
跑步锻炼(python)
题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。
小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米
import datetimesta = datetime.date(2000, 1, 1) # 该函数构造类型为datetime.date(year,month,day)end = datetime.date(2020, 10, 1)kl = 0while end >= sta: if sta.day == 1 or sta.weekday() == 0: # date.weekday()返回该日期是一周中的第几天,星期一返回0,星期二返回1等等 kl += 2 else: kl += 1 s ...
链表之节点删除(python)
题目描述有两个链表a和b,设节点中包含学号、成绩。从a链表中删去b链表中有相同学号的那些节点。
输入格式第一行有两个用空格隔开的整数n和m,分别表示a和b两个链表中的节点个数。保证n和m均不超过100。 之后的n行每行有两个用空格隔开的整数,分别表示一个学生的学号和成绩。 最后的m行每行有两个用空格隔开的整数,分别表示一个学生的学号和成绩。 a和b两个链表中的节点并不一定按照学号顺序排列。保证a链表中学号各不相同,b链表中学号各不相同。
输出格式首先输出a链表最终剩下的节点个数k。 在接下来的k行,每行输出两个用空格隔开的整数,分别表示一个学生的学号和成绩。 请注意行尾输出换行。
样例输入
3 3106 90104 80101 85104 95106 88105 87
样例输出
1101 85
代码实现:n, m = map(int, input().split())lis1 = []lis2 = []n_lis = []z = 0for i in range(n): a, b = map(int, input().split()) # 将学号和成绩分开输入 lis ...
排序(python)
题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝最近学习了一些排序算法,其中冒泡排序让他印象深刻。
在冒泡排序中,每次只能交换相邻的两个元素。
小蓝发现,如果对一个字符串中的字符排序,只允许交换相邻的两个字符, 则在所有可能的排序方案中,冒泡排序的总交换次数是最少的。
例如,对于字符串lan 排序,只需要 1 次交换。对于字符串qiao 排序,总共需要 4 次交换。
小蓝找到了很多字符串试图排序,他恰巧碰到一个字符串,需要 100 次交 换,可是他忘了吧这个字符串记下来,现在找不到了。
请帮助小蓝找一个只包含小写英文字母且没有字母重复出现的字符串,对 该串的字符排序,正好需 100 次交换。如果可能找到多个,请告诉小蓝最短的那个。如果最短的仍然有多个,请告诉小蓝字典序最小的那个。
代码实现:import osimport sys# 请在此输入您的代码word = 'abcdefghijklmnopqrstuvwxyz'dy, s = 0, 0for i in range(len(word)): # 通过for循环找到需要 ...
空间(python)
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位 二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问256MB 的空间可以存储多少个 32 位二进制整数?
运行限制
最大运行时间:1s
最大运行内存: 128M
import osimport sys# 请在此输入您的代码m = 256*1024*1024 // 1MB = 1024KB 1KB = 1024Bprint(m//4)
解题思路: 首先要知道32位二进制是4个字节(Byte);而1MB = 1024 KB,1KB = 1024B需要知道它们之间的进率;回到本题,就是需要先将其256MB转换为B,再除以4算出结果;又因为本题要求的是二进制整数,那么就需要将结果化为整数并且是向下取整,以便于有足够的空间。
而python中除法的向下取整和向上取整有不同的语法:
普通除法:
a = 5
b = 2
print(a / b)
结果为 :
2.5
向下取整:
a = 5
b = 2
print( ...
成绩分析(python)
题目描述小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
请计算这次考试的最高分、最低分和平均分。
输入描述输入的第一行包含一个整数 n (1≤n≤10^4),表示考试人数。
接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出描述输出三行。
第一行包含一个整数,表示最高分。
第二行包含一个整数,表示最低分。
第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。
输入输出样例示例
输入
780925674889910
输出
991071.29
参考代码:n = int(input()) # 输入人数cj_list = [] # 创建列表存放成绩for i in range(n): # 通过for循环依次向列表中添加成绩 cj_list.append(int(input()))print(max(cj_list)) # 用max函数找出列表中的最大值print(min(cj_list)) # 用min函数找出列表中的最小值print("{:.2f& ...
购物单(python)
题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。
这不,大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。
小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。
现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。
取款机只能提供 100100 元面额的纸币。小明想尽可能少取些现金,够用就行了。 你的任务是计算出,小明最少需要取多少现金。
以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。
**** 180.90 88折**** 10.25 65折**** 56.14 9折**** 104.65 9折**** 100.30 88折**** 297.15 半价**** 26.75 65折**** 130.62 半价**** ...