蓝桥杯训练2——奇怪的捐赠

暴力解法   哈哈哈

sum=1000000
for a in range(1,5):
    for b in range(1, 5):
        for c in range(1, 5):
            for d in range(1, 5):
                for e in range(1, 5):
                    for f in range(1, 5):
                        for g in range(1, 5):
                            for h in range(1, 5):
                                if a+b*7+c*49+d*343+e*2401+f*16807+g*117649+h*823543==sum:
                                    print(a+b+c+d+e+f+g+h)

贪心算法

def max_divisions():
    total_amount = 10**6  # 总金额为100万元
    divisions = []  # 存放每份金额

    # 找到所有7的幂次方并存储在列表中
    powers_of_7 = []
    power = 1
    while power <= total_amount:
        powers_of_7.append(power)
        power *= 7

    # 贪心地分配金额
    for amount in reversed(powers_of_7):
        count = min(5, total_amount // amount)  # 每个金额最多分5份
        total_amount -= count * amount
        divisions.extend([amount] * count)

        if total_amount == 0:
            break

    return len(divisions), divisions

# 输出结果
max_count, divisions = max_divisions()
print(f"最多可以分为 {max_count} 份:")
for i, amount in enumerate(divisions):
    print(f"{i+1}. {amount} 元")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值