凭钥问名
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目背景
软院 每月都会举办一次编程月赛,获奖同学可以到线下领取相应奖品。
不过,平日里霸榜的往往是一群不愿透露姓名的“隐藏大佬”。为了保护获奖者的个人信息、防止他人冒领奖品,管理员设计了一套根据用户 生成“领奖密钥”的机制,作为线下的领奖凭证。
然而百密一疏,在最近一次月赛结束后,小智不慎清空了这场比赛的数据。如今老师手中只剩下一批孤立的领奖密钥,根本无法查明它们究竟属于哪些获奖用户。
请你编写一个程序,根据这批仅存的领奖密钥,反向推测出它们可能对应的用户 ,帮助老师化解这场发奖危机。
题目描述
每位 用户拥有一个 位的用户 ,记为 ()。系统按如下规则为获奖者生成领奖密钥 :
- 求 的各位数字之和 ;
- 计算 ,不足 位则左侧补 。
请你编写一个程序:对于给定的领奖密钥,求出能够生成该密钥的最小合法用户 ;如果不存在这样的用户 ,则输出 。
输入格式
第一行输入一个正整数 ,表示需要查询的领奖密钥数量。
接下来输入 行,每行一个 位数字字符串 ,表示一个领奖密钥。
输出格式
共 行。对于每个领奖密钥,输出一行结果:
若存在合法用户 能生成该密钥,则输出其中最小的那个 ;否则输出 。
输入输出样例
3
100001
200028
222222
100000
100010
-1
样例解释:
-
:当 时, 的各位数字之和 ,代入公式可得 ,因此输出 。
-
:当 时, 的各位数字之和 ,代入公式可得 $(100010 \times 2 + 2^3) \bmod 1000000 = (200020 + 8) \bmod 1000000 = 200028$,因此输出 。
-
:不存在任何合法用户 能通过题目中的规则生成该密钥,因此输出 。
数据范围
- 对于 的数据,保证 。
- 对于 的数据,保证 。
- 对于 的数据,保证 。