SP15996 SNGNM2 - Number Magic II
题目描述
给定一个正整数 $num (> 9)$。我们定义 $sum$ 为 $num$ 各位数字的和;$avg$ 为 $sum$ 除以数字的位数的整数部分(如 $34 / 5$ 等于 6,取 $6.8$ 的整数部分)。接下来,我们将按照以下步骤,以 $avg$ 为基准重新排列 $num$ 的各位数字:
**步骤 1:**
- 设定 **new\_num = avg**。
- 逐位读取 $num$ 的数字:
- 如果某个数字大于 $avg$,则将该数字放在 new\_num 的最右边;
- 否则,将该数字放在 new\_num 的最左边。
**步骤 2:**
- 将 new\_num 重新拆分为两个数字:even\_number(由 new\_num 中的第 2、4、6、... 位数字组成)和 odd\_number(由 new\_num 中的第 1、3、5、... 位数字组成)。
- 注意计数从左到右,即第一位是 1,第二位是 2,以此类推。
**步骤 3:**
- 如果 even\_number 的位数不足 3,直接保存该数;
- 否则,计算其各位数字的平均值,然后从步骤 1 重新开始。
- 如果 odd\_number 的位数不足 3,直接保存该数;
- 否则,同样计算其各位数字的平均值,然后从步骤 1 重新开始。
当所有需要的数被保存后,我们要计算出 $num$ 的两个魔法系数,分别是 alpha 和 beta。
**digit\_sum 方法:**
- 初始 **number = num**。
- 不断将 number 的各位数字相加,重复这个操作直到得出的结果小于 10。
- **dig\_sum = 最终结果**。
**alpha 计算:**
- 对所有保存的数求和后,计算其 digit\_sum。
**beta 计算:**
- 对所有保存的数分别计算 digit\_sum 后,再求其和的 digit\_sum。
若 alpha、beta 和 $|alpha - beta|$ 都是 $num$ 的某个数字,我们就称 $num$ 为魔法数。
输入格式
第一行是一个整数 $t (< 101)$,表示测试用例的总数。每个测试用例的第一行是一个整数 $n (< 501)$,接下来的 $n$ 行每行包含一个整数 $num (< 10^{101})$。
输出格式
对于每个测试用例,输出恰好 $n$ 行。每行包含 alpha 和 beta 的值;如果 $num$ 是魔法数,则输出 `yes`,否则输出 `no`。
**本翻译由 AI 自动生成**