基于python语言求出达到1000000涂装劵的最短时间为101天
看见你游有大佬能用1000000涂装劵抵购氪金涂装,现在计算装劵数量达 1000000的最短时间
问题描述:我们有四个任务,每个任务有不同的涂装劵数量、经验、金币和所需小时数。我们需要在尽可能短的时间内,通过执行这些任务,使得总涂装劵数量达到或超过1000000。不同卡槽的任务可以同时进行,但每个卡槽只能执行对应任务。目标:找到最短时间,使得总涂装劵数量达到或超过1000000,并计算出总经验、总金币和各个任务的执行次数。思路:
- 逐步增加时间:从时间1开始,逐步增加时间,直到总涂装劵数量达到或超过1000000。
- 检查任务完成情况:在每个时间点,检查所有任务,如果当前时间点是某个任务的完成时间点,则执行该任务,并更新总涂装劵数量、总经验、总金币和执行次数。
输出结果:当总涂装劵数量达到或超过1000000时,输出最短时间、总经验、总金币和各个任务的执行次数。
输出以下结果
最短时间: 75474 小时 (3145 天)
总经验: 22536700
总金币: 6183448000
各个任务的执行次数: [9434, 4717, 4193, 6289]
即最短都要10年
考虑到实际上还有每日签到和每日活跃
在每个月的5、12、20、27号都能获得400
在每天活跃达到150下能够获得350
最短时间: 2410 小时 (101 天)
总经验: 716800
总金币: 196634000
各个任务的执行次数: [301, 150, 133, 200]
以下是加入每日签到和每日活跃奖励后的代码:
import math
# 任务信息
tasks = [
{"name": "铝材运输", "涂装劵数量": 24, "经验": 600, "金币": 142000, "所需小时数": 8},
{"name": "远洋实弹特训", "涂装劵数量": 64, "经验": 1400, "金币": 402000, "所需小时数": 16},
{"name": "深海资源采集", "涂装劵数量": 66, "经验": 1400, "金币": 424000, "所需小时数": 18},
{"name": "远洋重油运输", "涂装劵数量": 31, "经验": 700, "金币": 186000, "所需小时数": 12}
]
# 目标涂装劵数量
target_涂装劵数量 = 1000000
# 初始化结果
total_涂装劵数量 = 0
total_经验 = 0
total_金币 = 0
total_时间 = 0
执行次数 = [0] * len(tasks)
# 每日签到和每日活跃奖励
签到奖励日 = {5, 12, 20, 27}
每日活跃奖励 = 350
# 逐步增加时间,直到满足条件
while total_涂装劵数量 < target_涂装劵数量:
total_时间 += 1
# 检查每日签到奖励
if (total_时间 // 24) % 30 + 1 in 签到奖励日:
total_涂装劵数量 += 400
# 检查每日活跃奖励
total_涂装劵数量 += 每日活跃奖励
# 检查任务完成情况
for i, task in enumerate(tasks):
if total_时间 % task["所需小时数"] == 0:
执行次数[i] += 1
total_涂装劵数量 += task["涂装劵数量"]
total_经验 += task["经验"]
total_金币 += task["金币"]
# 输出结果
print(f"最短时间: {total_时间} 小时 ({math.ceil(total_时间 / 24)} 天)")
print(f"总经验: {total_经验}")
print(f"总金币: {total_金币}")
print(f"各个任务的执行次数: {执行次数}")