首页 > 试题广场 >

小红的能量校准

[编程题]小红的能量校准
  • 热度指数:220 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红和小紫正在探索一座远古的高科技遗迹。在遗迹的核心区域,她们被一道闪烁着幽蓝色光芒的“能量平衡门”挡住了去路。

门上显示着一串复杂的能量传导公式,公式的末尾是一个固定的目标能量值。为了打开这扇门,小红必须向能量槽中注入精确数量的初始源能(用变量 x 表示)。

这个远古文明的书写习惯非常独特,它们在记录能量倍率时,常常会省略乘号。根据小紫的分析,公式的规则如下:
1. 等式左边包含变量 x、非负整数、运算符 `+`、`*`、`(`、`)`。等式右边一定是一个固定的数,且可能是负数(即由数字字符组成,且可能包含'-'放在数字串开头)。
2. 隐式乘法规则:当数字、变量 x 或括号紧密相邻时,表示它们之间存在乘法关系。例如:
- `2(x+1)` 等同于 2 \times (x+1)
- `x3` 等同于 x \times 3
- `(x+1)2` 等同于 (x+1) \times 2
- `2x` 等同于 2 \times x
3. 公式是一个线性方程,即 x 的最高次幂为 1,且 x 在整个字符串中恰好出现一次,并且一定位于等号 `=` 的左侧。

现在,小红记录下了门上的那个字符串 s,请你帮她计算出开启大门所需的初始源能 x 是多少。

输入描述:
输入一行,包含一个字符串 s,表示门上显示的能量传导公式。
- 3 \leqq |s| \leqq 1000(字符串长度在 5 到 1000 之间)。
- 题目保证解 x 是一个整数。
- 所有的中间计算过程及最终结果均在 64 位有符号整数(long long)范围内。
- 输入的字符串保证合法,且只包含题目描述中提到的字符。


输出描述:
输出一个整数,表示满足公式的 x 的值。
示例1

输入

((x+2)*3+1)*2+5=79

输出

10

说明

对于样例,我们需要找到一个 x,使得等式左边计算结果为 79。
x = 10 时:
1. 最内层括号:10 + 2 = 12
2. 乘以 3:12 \times 3 = 36
3. 加 1:36 + 1 = 37
4. 乘以 2:37 \times 2 = 74
5. 加 5:74 + 5 = 79
等式成立,故答案为 10。
示例2

输入

3x=6

输出

2
头像 孙浩瑞
发表于 2026-01-14 10:35:27
import java.util.*; public class Main { // 表示 k*x + b static class Expr { long k; // x 的系数 long b; // 常数项 Expr(long 展开全文
头像 牛客400733117号
发表于 2026-01-15 17:28:45
没有用前缀表达式,用的中缀硬算的哈哈哈哈。 #include <cctype> #include <cstddef> #include <iostream> #include <string> #include <vector> #incl 展开全文
头像 Silencer76
发表于 2026-01-16 15:08:30
题目链接 小红的能量校准 题目描述 小红和小紫在探险中遇到了“能量平衡门”。门上有一个包含变量 的线性方程。 公式包含变量 、非负整数、运算符 +、*、(、)。 存在隐式乘法规则:数字、变量 或括号紧密相邻时表示乘法。例如:2(x+1) 为 ,x3 为 ,(x+1)2 为 ,2x 为 。 方程 展开全文
头像 用心的布莱克刷牛客
发表于 2026-01-14 17:28:11
#include <iostream> #include <string> #include <stack> using namespace std; using ll = long long; // 定义运算符优先级 int priority(char op) 展开全文
头像 你完全是想得多做得少
发表于 2026-01-16 20:11:44
https://github.com/nxlogn/leetcode-hot-100/tree/main/huawei/2025 const rl = require("readline").createInterface({ input: process.stdin }); v 展开全文