4248 - 数字转转转
时间限制 : 1 秒
内存限制 : 128 MB
有一个“数字转转转”游戏,规则如下:
给定一个正整数 x,进行一次“数字转转转”操作就是将其每一位数字相加,得到一个新的数。例如:375 经过一次操作变为 3+7+5=15,15 经过一次操作变为 1+5=6。
现在有 T 组测试数据,每组数据给出操作次数 type 和若干个正整数,请计算每个数字经过 type 次“数字转转转”操作后的结果。
注意:由于数字的特性,一个数经过最多两次操作后就会变成一位数(0~9),之后再进行操作结果不变。因此,对于任意 type:
- 如果 type=0,结果为原数(但题目保证 type≥1);
- 如果 type=1,只需进行一次数位和计算;
- 如果 type≥2,最多只需进行两次数位和计算,因为两次后必为一位数,后续操作不会改变结果。
输入
第一行一个整数 T (1 ≤ T ≤ 10³),表示测试组数。
对于每组测试数据:
- 第一行一个整数 type (1 ≤ type ≤ 10⁹),表示操作次数;
- 第二行一个整数 m (1 ≤ m ≤ 10⁵),表示数字个数;
- 第三行 m 个正整数 x (1 ≤ x ≤ 10⁹),表示待处理的数字。
保证所有测试数据的 m 之和不超过 10⁶。
输出
对于每组测试数据,输出一行,包含 m 个整数,表示每个数字经过 type 次操作后的结果,数字之间用一个空格隔开。
样例
输入
3 1 4 123 456 789 999 2 3 10 100 1000 3 2 9876 54321
输出
6 15 24 27 1 1 1 3 6
输入
2 1 3 0 1 9 5 2 999999999 1000000000
输出
0 1 9 9 1
提示
样例 1 解释 第一组:type=1,每个数进行一次操作。
- 123 → 1+2+3=6
- 456 → 4+5+6=15
- 789 → 7+8+9=24
- 999 → 9+9+9=27
第二组:type=2,每个数进行两次操作。
- 10 → 1+0=1 → 1(第二次操作时,1 已经是一位数,所以结果不变)
- 100 → 1+0+0=1 → 1
- 1000 → 1+0+0+0=1 → 1
第三组:type=3,每个数进行三次操作,但两次后已稳定。
- 9876 → 9+8+7+6=30 → 3+0=3 → 3(第三次操作时,3 已是一位数,结果不变)
- 54321 → 5+4+3+2+1=15 → 1+5=6 → 6