You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP实现MissingDigit函数 查找数学表达式中缺失的数字x

PHP实现MissingDigit函数

函数规则

  • 入参$str为字符串类型,内容是包含3个整数、单个运算符(支持+、-、*、/四种)、1个等号的简单数学等式
  • 等式三个整数中,某一位数字会被字符x替换,需计算能让等式成立的x对应的0-9数字并返回
  • 示例:输入$str为"3x + 12 = 46"时,正确输出为4
  • 约束:x可出现在三个整数的任意位置,所有整数取值范围为0 ≤ 数值 ≤ 1000000

实现代码

function MissingDigit($str) {
    // 按空格拆分字符串,提取操作数和运算符
    $parts = explode(' ', $str);
    $num1Str = $parts[0];
    $op = $parts[1];
    $num2Str = $parts[2];
    $resultStr = $parts[4];

    // 遍历0-9所有可能的数字替换x
    for ($i = 0; $i <= 9; $i++) {
        // 替换x为当前数字,转成整数
        $n1 = (int)str_replace('x', (string)$i, $num1Str);
        $n2 = (int)str_replace('x', (string)$i, $num2Str);
        $res = (int)str_replace('x', (string)$i, $resultStr);

        // 按运算符校验等式是否成立
        $isMatch = false;
        switch ($op) {
            case '+':
                $isMatch = ($n1 + $n2) == $res;
                break;
            case '-':
                $isMatch = ($n1 - $n2) == $res;
                break;
            case '*':
                $isMatch = ($n1 * $n2) == $res;
                break;
            case '/':
                // 除法用乘法校验,避免浮点精度问题,同时排除除零错误
                $isMatch = $n2 != 0 && $n1 == $res * $n2;
                break;
        }

        if ($isMatch) {
            return $i;
        }
    }

    // 题目保证输入合法,正常不会走到这里
    return -1;
}

// 测试调用
echo MissingDigit("3x + 12 = 46"); // 输出4
?>

逻辑说明

  • 先按输入串的固定空格格式拆分,拿到两个左侧操作数字符串、运算符、右侧结果字符串
  • 遍历0到9所有可能的数字,将三个字符串里的x替换为当前数字后转成整数
  • 按照对应运算符做等式校验,除法场景用乘法逆运算判断,规避浮点误差和除零问题
  • 匹配到成立的等式时直接返回当前替换的数字即可

内容的提问来源于stack exchange,提问作者Vaibhav Garsondiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 15:42:08