最近做到的一个个人感觉比较麻烦的问题

题目描述

小明在玩进阶版大富翁,进阶版大富翁有特殊的步数计算方法。小明每次可以走的步数由一个公式决定。公式每个部分可以是一个整数或者一次数字抽奖 ndsnds 表示,在 1s 中的整数中,可以抽取 n 次,结果是你 n 次结果的和。总步数就是整个式子的结果。

1+2d3,代表的就是 1+2次在1到3之间抽取数字的结果。结果最小值为三,最大值为七。

现在题目中会给你一个字符串 s 表示步数的计算公式,请你编写代码,帮小明计算一下,他可以走的步数的期望值是多少?(结果如果不是整数,那么保留一位小数)。

输入输出格式

输入格式 一个字符串 s

输出格式 一个整数。

输入输出样例1

输入 1+2d3

输出 5

输入输出样例2

输入 3d3+5+1d9

输出 16

s = input()
ans = 0
minn = 0
maxm = 0
low = 0
for i in range(0,len(s)-1):
    if s[i] == '+':
        q = s[low:i]
        low = i+1
        if 'd' not in q:
            ans += int(q)
        else:
            for j in range(len(q)):
                if q[j] == 'd':
                    sen = q[0:j]
                    ren = q[j+1:]
                    minn += int(sen) * 1
                    maxm += int(sen) * int(ren)
high = s[low:]
if 'd' not in high:
    ans += int(high)
else:
    for w in range(len(high)):
        if high[w] == 'd':
            sen = int(high[0:w])
            ren = int(high[w + 1:])
            minn += sen * 1
            maxm += sen * ren
example = ((ans+minn)+(ans+maxm))/2
if example-int(example)>0:
    print('{:.1f}'.format(example))
else:
    print(int(example))


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值