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 自动生成**