# 简单数学问题复杂度判断

本文件是 [复杂度判断](复杂度判断.md) 的专项条件表，父维度是 `complex` / 复杂度判断。

它专门用于在业务标签为 `简单数学问题` 时，进一步分流 `complex=false` 与 `complex=true`。命中本文件的非复杂任务清单时，给 `complex=false`；其余符合简单数学问题但未命中清单的 query，给 `complex=true`。

## 使用原则

- 本文件只在业务标签判断为 `简单数学问题` 时启用，不替代标签判断。
- 复杂度分流以"任务形态"为准，不以题面长短或数字大小为准。
- 命中下方非复杂任务清单的，给 `complex=false`；未命中但仍属于简单数学问题的，统一给 `complex=true`。
- 如果 query 同时涉及多指令或自动任务，仍需分别读取对应维度文件，不要混成一个结论。

## 非复杂任务清单（complex=false）

只有命中以下任一类型，才给 `complex=false`：

### 公式计算

四则运算、根号、幂运算、小数、分数、百分比之间的直接计算。

示例：

- 三加五乘以二等于多少
- 根号一百四十四是多少
- 二的十次方是多少
- 零点三七五加零点二五等于几
- 三分之二加四分之一是多少
- 八十的百分之十五是多少

判断要点：

- 计算对象是数字与基础运算符的组合，无需引入外部知识。
- 不需要拆步骤推理，公式直接落到一次计算。

### 单位转换

长度、面积、体积、重量、速度、时间、温度等度量单位之间的换算。

示例：

- 五公里等于多少米
- 三斤是多少千克
- 一百华氏度是多少摄氏度
- 两小时三十分钟一共多少秒

判断要点：

- 输入与输出都是同一物理量在不同单位下的表达。
- 转换关系是固定常数，不涉及实时数据。

### 汇率换算

货币之间的金额换算。

示例：

- 一千美元等于多少人民币
- 五百欧元换成日元是多少
- 港币一万兑换成人民币

判断要点：

- 任务是一次金额从源币种到目标币种的换算。
- 即使汇率本身需要查询，任务形态仍然是单步换算，给 `complex=false`。

### 称谓计算

亲属关系、辈分、称呼之间的推算。

示例：

- 我爸爸的姐姐的儿子叫我什么
- 我妈妈的弟弟的女儿是我的什么人
- 表哥的爸爸应该怎么称呼

判断要点：

- 任务是从一条亲属链推出对应称谓。
- 输出是一个称谓词，不需要规划或多方案比较。

### 数列计算

等差、等比、简单递推数列的下一项、项数、求和等基础题。

示例:

- 二四六八下一个数是多少
- 一三五七九的第十项是多少
- 一加二加三一直加到一百等于多少
- 等比数列首项二公比三第五项是多少

判断要点：

- 数列规则可以一步识别，套公式或一次累加即可得到答案。
- 不涉及证明、构造、分类讨论或多步推理。

## 复杂任务（complex=true）

不在上述清单中、但仍属于简单数学问题的 query，统一给 `complex=true`。

典型范围：

- 应用题：需要从自然语言情境中抽取数量关系，再列式计算（例如 BMI、利息、折扣、行程、工程、浓度、年龄等问题）。
- 多步推理：需要先求中间量，再用中间量算最终答案。
- 条件分类讨论：需要根据条件取不同公式或方案。
- 几何/三角计算需要图形分析或多公式组合。
- 概率、统计、组合数等需要建模才能列式的问题。

判断要点：

- 即使最终落到一次算式，只要算式不是用户直接给出，而是需要从语义中推出来，就给 `complex=true`。
- 题面里出现"如果""假设""至少""至多""每""共""相遇""往返""打几折""年化"等需要建模的关键词时，倾向于 `complex=true`。

## 列竖式的处理

"列竖式"只是输出形态要求，不改变任务本身的复杂度。判断时剥离"列竖式"这一表层要求，再看底层任务命中哪一类：

- 列竖式 + 非复杂任务清单中的题目 → `complex=false`。
- 列竖式 + 不在清单中的题目（应用题、多步推理、分类讨论等）→ `complex=true`。

示例：

| query | complex | 原因 |
| --- | --- | --- |
| 列竖式计算二十三加四十五 | false | 底层是四则运算，命中公式计算 |
| 列竖式算一下三斤等于多少千克 | false | 底层是单位转换 |
| 列竖式算这道应用题：小明有 5 个苹果，给了小红 2 个… | true | 底层是应用题，需要建模 |
| 列竖式求两位数乘三位数余多少 | true | 底层涉及多步推理或分类讨论 |

判断要点：

- 不要因为 query 出现"列竖式""写过程""分步"等表达就升级或降级复杂度。
- 先回答"如果不要求列竖式，这道题是哪一类"，再据此决定 complex。

## 判断流程

1. 先判断业务标签是否为 `简单数学问题`；不是则不读本文件。
2. 如 query 含"列竖式"等输出形态要求，先剥离再判断底层任务类型。
3. 检查 query 是否命中"非复杂任务清单"的任一类型；命中给 `complex=false`。
4. 没有命中时，给 `complex=true`。
5. 如果 query 同时是多指令或自动任务，按对应维度文件单独判断，不在本文件处理。

## 待维护问题

- 进位、退位、竖式、心算等更基础的小学题型是否单列。
- 含变量的简单代数式（例如 `x+3=10`）的归属，目前默认归 `complex=true`。
- 与"知识问答"边界：纯定义类问题（"什么是质数"）通常归到 QA，不走本维度。
