03-19 笔记
1、贫困县
# 自定义函数, def ,递归
#第一行包含一个正整数N,为村里家庭的总数。
# 第二行包含一个正实数L,表示贫困线。
n = int(input())
l = float(input())
# meaningful variable name
cnt = 0
for i in range(1,n+1):
num = float(input())
# 家庭收入小于贫困线
if num < l:
cnt += 1
print(cnt)
2、贫困县plus
# 第一行包含一个正整数N
n = int(input())
# 第二行包含一个正实数L,表示贫困线
l = float(input())
# 最后一行包含一个整数,为处于贫困线以下家庭的数量。
l_num = 0
for i in range(1,n+1):
# 家庭名称是str类型,直接接收。无需转换类型
family_name = input()
family_num = int(input())
total_income = 0.0
for _ in range(family_num):
income = float(input())
total_income += income
if total_income < l :
l_num +=1
# 总收入保留三位小数
formated_income = "{:.3f}".format(total_income)
print(family_name + " "+ formated_income)
print(l_num)
3、 凑钱
# 一个整数n
# 算法: 枚举法,穷举法
n = int(input())
for num_10 in range(0,n//10+1):
for num_50 in range(0,n//50+1):
if num_10*10 + num_50*50 == n:
print(str(num_10) + " " + str(num_50))
4、 凑钱plus
n=int(input())
#张数最小的情况计数,float('inf')初始化为无穷大
min_sum_cnt =float('inf')
min_num_10 = float('inf')
min_num_20 = float('inf')
min_num_50 = float('inf')
# 用for循环的嵌套以及range(start, end, step)
# 巧妙的解决50,20,10的权重问题。
# 例如:n = 450, 最多9张50。
# 0 0 9
# 1 2 8
# .. 7
# ...
# .. 0
# for num_50 in range(450//50,-1,-1)
# range(450//50,-1,-1)
# 450//50 = 9
# range( 9,-1,-1) 枚举数字是从9开始8,7,....0张,
for num_50 in range(n//50,-1,-1):
left_amt = n - num_50*50
for num_20 in range(left_amt//20,-1,-1):
cur_amt = left_amt - num_20*20
#把剩下的钱,计算出10元的张数
num_10 = cur_amt//10
# 每次枚举,计算一个当前的总张数
cur_sum_cnt = num_10 + num_20 + num_50
if cur_sum_cnt < min_sum_cnt:
min_num_10 = num_10
min_num_20 = num_20
min_num_50 = num_50
min_sum_cnt = cur_sum_cnt
print(num_10,num_20,num_50)
print(min_num_10,min_num_20,min_num_50)

浙公网安备 33010602011771号