目录
第十一题:分数求和
# 求最大公约数gys函数
def gys(a, b):
while b != 0:
c = a % b
a,b = b,c
return a
n = int(input('多少项n:')) -1
m = 0
for i in range(n+1):
m += 2 ** i
num = gys(m, 2 ** n )
print(m // num , '/', 2 ** n // num, sep='') # sep字符串间分隔符
# m是分子的和,2**n 是分母,num是分子分母的公约数
# 输出:通过公约数约分后的分子分母(除完是浮点//相当于int)
''' 因为1/1 + 1/2 + ... + 1/2^19通分后
= 2^19/2^19 + 2^18/2^19 + ... + 1/2^19
则所有分子的和为2^19 + 2^18 + ... + 1 '''
第十二题:复数求和
n = int(input('要输入多少个复数n:'))
ls = [] #因为实部和虚部用链表存储,所以要放在同一个列表
for i in range(n):
s = input('').strip().split()
if s != '':
ls.append(s)
#print(ls) #遍历用print监测结果
real,imag = 0,0
for i1 in range(n):
real += int(ls[i1][0])
imag += int(ls[i1][1])
#print(real,imag) #遍历用print监测结果
print('{}+{}i'.format(real,imag))
第十三题:龟兔赛跑预测
s = input('输入一行空格隔开的五个正整数v1,v2,t,s,l:')
s = s.strip().split()
v1,v2,t,s,l = map(int,s)
wg_time = l // v2 #乌龟不停下:最大时间=乌龟时间,给后面for秒数
tz_len,wg_len,flag = 0,0,0 #兔子,乌龟距离,哨兵flag
for i in range(1,wg_time+1):
wg_len += v2
if flag > 0:
flag -= 1
else:
tz_len += v1
if tz_len - wg_len >= t:
flag = s
if tz_len==wg_len>=l:
print('D\n',i,sep='')
break
elif tz_len >=l and tz_len >wg_len:
print('R\n',i,sep='')
break
elif wg_len >=l and wg_len >tz_len:
print('T\n',i,sep='')
break
第十四题:购物单取钱
'''题中文本提取修改后的 item.txt '''
180.90 0.88
10.25 0.65
56.14 0.90
104.65 0.90
100.30 0.88
297.15 0.50
26.75 0.65
130.62 0.50
240.28 0.58
270.62 0.80
115.87 0.88
247.34 0.95
73.21 0.90
101.00 0.50
79.54 0.50
278.44 0.70
199.26 0.50
12.97 0.90
166.30 0.78
125.50 0.58
84.98 0.90
113.35 0.68
166.57 0.50
42.56 0.90
81.90 0.95
131.78 0.80
255.89 0.78
109.17 0.90
146.69 0.68
139.33 0.65
141.16 0.78
154.74 0.80
59.42 0.80
85.44 0.68
293.70 0.88
261.79 0.65
11.30 0.88
268.27 0.58
128.29 0.88
251.03 0.80
208.39 0.75
128.88 0.75
62.06 0.90
225.87 0.75
12.89 0.75
34.28 0.75
62.16 0.58
129.12 0.50
218.37 0.50
289.69 0.80
'''————————————————————————————————————————————'''
f = open('item.txt','r')
sum = 0.00 #定义为浮点数
for i in f:
ls = i.strip().split()
#print(ls) #调试过程用print监测
i = eval(ls[0]) * eval(ls[1])
sum += i
f.close()
sum1 = round(sum,-2) #四舍五入round函数
##print(sum1,sum) #调试过程用print监测
if abs(sum1-sum) <50:
sum = int(sum1 +100)
else:
sum = int(sum1)
print(sum)
第十五题:换钞票,求数量
我个人是直接采用暴力做法(如下):
'''这样for的原因:当5块钱40张,是两百块钱
条件:21*num1 + 5*num5 = 200'''
money = 200
ls = []
for num5 in range(1,41):
yu = int( abs(money-5*num5) %21)
if yu==0:
num1 = abs(money-5*num5) //21
if num1 != 0:
all_num = 11*num1 + num5 #钞票数 = 11*num1 + num5
ls.append(all_num) #筛选符合条件的钞票数量,加入列表
print(max(ls))
第十六题:矩形面积交(坐标系上)
s1 = input('输入两行,每行给出矩形一对相对顶点的坐标:\n')
s2 = input()
x1,y1,x2,y2 = map(int,s1.strip().split()) #矩形1的两点
x3,y3,x4,y4 = map(int,s2.strip().split()) #矩形2的两点
#判断矩形1位置是否在矩形2前面
if x1 < x3:
a = max(x1,x2) - min(x3,x4)
b = max(y1,y2) - min(y3,y4)
else:
a = min(x1,x2) - max(x3,x4)
b = min(y1,y2) - max(y3,y4)
s = a*b #矩形面积S=长X宽(a*b)
print(s)
第十七题:数门牌号
num2 = 0
for i in range(1,2021):
i = str(i)
#num2 += i.count('2')
for n in i:
if n == '2':
num2 += 1
print(num2)
第十八题:矩阵求和
def gcd(i, j):
while j !=0:
k = i % j
i, j = j, k
return i
n = int(input('表有n行n列:'))
sum = 0
mod = 10**9 + 7
for i in range(1, n+1):
for j in range(1, n+1):
t = gcd(i, j) ** 2
sum += t % mod
print(sum)
第十九题:时间转换
t = int(input('输入一整数t(0<=t<=86399):'))
print('{}:{}:{}'.format(t//3600, t%3600//60, t%3600%60) )
第二十题:年号对应字串
##n = int(input('输入数字:'))
n = 2019
str= ''
while n != 0:
t = n % 26 #取余获得该位英文(从后往前)对应字母表的位置
str += chr(64+t)
n = int(n / 26) #当n除以26小于1,结束循环
print(str[::-1]) #倒序输出从后往前获得的字母串
如果看不懂上面那一段代码的意思:看下图,相当于 该程序运行的步骤(清晰明了)
———————————————————感谢浏览————————————————————
》》》以上题目 和小部分答案,来自:寻找永不遗憾的博客_CSDN博客-深度学习基础知识,地平线开发板相关,目标检测系列领域博主