来
UDK姐贵正在玩一个数学游戏,她的手上有一个整数a,初始时a=0。
现在UDK姐贵可以进行两种操作:
选择一个正整数 p ,令a:=a+p+rev(p)。这次操作会带来bitcnt(p)的代价。
令a:=10a。这次操作没有代价。
其中:
rev(p)表示p所有数位反转所代表的数,比如rev(1145)=5411,rev(30)=3。
bitcnt(p)表示p所有数位数字的和,比如bitcnt(1145)=1+1+4+5=11,bitcnt(30)=3+0=3。
UDK姐贵想要知道,在进行若干次操作后能否将 a 从 0 变为 x ,以及最少需要花费的代价。
但是UDK姐贵并不会解决这个问题,她希望你能告诉她答案。
由于UDK姐贵想要玩很多次这个游戏,所以你需要回答多个询问。
输入描述
第一行一个整数T表示测试用例个数。
对于每个测试用例,一行一个整数x。
输出描述
对于每个测试用例,如果在进行若干次操作后能否将 a 从 0 变为 x 则输出最少需要花费的代价,如果不能则输出 −1 。
输入 1
4
7
12
66
103
输出 1
-1
6
6
2
提示
保证 1≤T≤1e5
,1≤x<1e1000000
,∑log 10x≤1000000.
时间限制C/C++ 1000MS,其他语言 2000MS
UDK姐贵正在玩一个数学游戏,她的手上有一个整数a,初始时a=0。
现在UDK姐贵可以进行两种操作:
选择一个正整数 p ,令a:=a+p+rev(p)。这次操作会带来bitcnt(p)的代价。
令a:=10a。这次操作没有代价。
其中:
rev(p)表示p所有数位反转所代表的数,比如rev(1145)=5411,rev(30)=3。
bitcnt(p)表示p所有数位数字的和,比如bitcnt(1145)=1+1+4+5=11,bitcnt(30)=3+0=3。
UDK姐贵想要知道,在进行若干次操作后能否将 a 从 0 变为 x ,以及最少需要花费的代价。
但是UDK姐贵并不会解决这个问题,她希望你能告诉她答案。
由于UDK姐贵想要玩很多次这个游戏,所以你需要回答多个询问。
输入描述
第一行一个整数T表示测试用例个数。
对于每个测试用例,一行一个整数x。
输出描述
对于每个测试用例,如果在进行若干次操作后能否将 a 从 0 变为 x 则输出最少需要花费的代价,如果不能则输出 −1 。
输入 1
4
7
12
66
103
输出 1
-1
6
6
2
提示
保证 1≤T≤1e5
,1≤x<1e1000000
,∑log 10x≤1000000.
时间限制C/C++ 1000MS,其他语言 2000MS