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)
posted @ 2025-03-19 21:32  kkman2000  阅读(32)  评论(0)    收藏  举报