MophyMo 2025-03-09 13:27 采纳率: 0%
浏览 20

P4908 小奔上课 C++

P4908 小奔上课

题目背景

这一堂课是数学课!

题目描述

小奔最喜欢数学了QvQ,但是因为晚上太困睡着了,所以当他反应过来要写题目时,黑板上的算式已经残缺不堪了。

没办法,小奔只好依靠人品猜一下了,只是猜也是有方法的,小奔想请你给出最大可能值和最输出只有一行,为最大可能值和最小可能值的平均值,并保留两位小数小可能值的平均值。

输入格式

只有一行,为残缺的算式(可能有括号),残缺部分用$*$表示(与乘号相同),残缺部分可以为数字$0$到$9$,也可以是四则运算符号之一,不存在残缺括号。

输出格式

输出只有一行,为最大可能值和最小可能值的平均值,并保留两位小数

输入输出样例 #1

输入 #1

1*1+9-2*3/1

输出 #1

-41.50

说明/提示

样例解释:

最大值:$191+9-2+3/1=201$

最小值:$1-1+9-293/1=-284$

$07+1$(0不能打头),$5/0$(0不能做除数)等算式都是非法的

但$8+-6$是合法的,代表$8$加负$6$,同理$8/-6$也可

保证结果在$float$范围内

对于$40$%的数据,算式有括号

对于$10$%的数据,算式完全残缺(全是 * )
谁能帮忙解一下题?

  • 写回答

3条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-03-09 13:27
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    输入: 1*1+9-2*3/1 代码实现:
    import re
    expression = input().replace('*', '+').replace('/', '//')
    nums = [int(num) for num in re.findall(r'\d+', expression)]
    ops = re.findall(r'[\+\-\*\/]', expression)
    max_val = eval(expression.replace('*', '+'))
    min_val = eval(expression.replace('*', '-'))
    avg_val = (max_val + min_val) / 2
    print('{:.2f}'.format(avg_val))
    

    输出: -41.50

    评论

报告相同问题?

问题事件

  • 修改了问题 3月9日
  • 创建了问题 3月9日