试题 基础练习 时间转换
给定一个以秒为单位的时间t,要求用“H:M:S”的格式来表示这个时间。h表示时间,m表示分钟,s表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。
t = int(input())
s = t % 60
m = (t // 60) % 60
h = (t // 3600) % 24
print("%d:%d:%d" % (h, m, s))
试题 基础练习 字符串对比
给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等。比如 Beijing 和 Hebei 2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing 3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing 4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing 编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。
a = input()
b = input()
if len(a) != len(b):
print("1")
if a == b:
print("2")
if a != b and a.upper() == b.upper():
print("3")
if len(a) == len(b) and a.upper() != b.upper():
print("4")
试题 基础练习 分解质因数
求出区间[a,b]中所有整数的质因数分解。
a,b = map(int,input().split())
for n in range(a,b+1):
print("{}=".format(n),end='')
while n>1:
for i in range(2,n+1):
if n%i==0:
n=int(n/i)
if n==1:
print(i)
else:
print("{}*".format(i),end='')
break
试题 基础练习 矩阵乘法
给定一个N阶矩阵A,输出A的M次幂(M是非负整数)
例如:
A =
1 2
3 4
A的2次幂
7 10
15 22
'''
import numpy as np
n,m = map(int,input().split())
ls = []
for i in range(n):
ls1 = list(map(int,input().split()))
ls.append(ls1)
arr1 = np.array(ls)
arr2 = arr1 ** m
ls = list(arr2)
for i in ls:
for j in i:
print(j,end=" ")
print()
'''
def cheng(ls,v): #两个矩阵相乘,v是ls的纵向矩阵,所以ls4为矩阵ls的二次幂,例:
ls4 = [] #[[1,2],[3,4]] ** 2 = [[1*1+2*3,1*2+2*4],[1*3+3*4,2*3+4*4]]
for i in ls: #用[[1,2],[3,4]]和[[1,3],[2,4]]对应元素求值的话就很容易
ls3 = []
for m in v:
sum1 = 0
for u in range(n):
sum1 = sum1 + i[u] * m[u]
ls3.append(sum1)
ls4.append(ls3)
return ls4
def _print(ls4):
for i in ls4: #输出函数
for j in i:
print(j,end=" ")
print()
def mi(xx,num): #递归利用乘法函数求m次幂,xx是要求幂的矩阵,num是次数
q2 = cheng(xx, v)
if num == 2:
_print(q2)
else:
mi(q2, num - 1) #递归,当num=2时结束
n,m = map(int,input().split())
ls = []
for i in range(n):
ls1 = list(map(int,input().split()))
ls.append(ls1)
v = []
for j in range(n): #求ls的纵向矩阵
ls2 = []
for k in ls:
ls2.append(k[j])
v.append(ls2)
if m == 0:
x = []
for q in range(n):
y = []
for w in range(n):
if not w == q:
y.insert(w, 0)
else:
y.insert(w, 1)
x.append(y)
_print(x)
elif m == 1:
_print(ls)
else:
mi(ls, m)
这一题如果能用numpy的话会好求很多,可惜比赛是不能用库的,所以只能用这种麻烦的麻烦一步一步算,矩阵的n次幂其实就是n个相同的矩阵相乘,所以要写出两个矩阵相乘的函数,然后递归,两个矩阵相乘用Python的话不容易取元素,所以先把一个矩阵变为纵向的,这样矩阵相乘的话就可以把行乘以列的运算转化为行乘以行的运算,最后分三种情况调用相应函数即可得到结果。
PS:一杯茶一包烟,一段破码写一天。没有思路提示硬肝代码真的是件很痛苦的事,但若是完全借鉴别人的思路又会提升的很慢,所以痛苦归痛苦,还是自己先思考,再参照别人的思路,求同存异,这样才能保证效率并且开阔思路,而且当你看着自己肝了一下午的代码终于跑起来,真的是很有成就感的事。