题目描述
今天,TC买了一盒火柴,打算和小yh比拼谁能用有限的火柴得到一个最大数字。火柴拼数字规则是,拼出零到九分别需要6、2、5、5、4、5、6、3、7、6个火柴。
现在给TC a个不同火柴数,求你帮TC计算不同的火柴数a分别能组成的最大数字,如果不能组成数字,输出-1。输入
第一行输入一个n。
接下来n行,每行一个数a(0<=a<=103)输出
每行输出一个能组成的最大数字。
样例输入 Copy
3 1 2 4样例输出 Copy
-1 1 11提示
TC说火柴要省着用
""""
火柴划分问题:
很高级,想到了通过//最小火柴数,获得最大位数,从而获得最大数字
但在这里有点不一样,是思维的进阶
在这里火柴数最少的是2,这说明我们获得的值要么是0要么是1
而如果是0,则位数最大就是全为1来拼凑
如果是1,则改变最高位,将最高位的火柴数+1,看数字,其余数字全为1
"""
n=int(input())
t={0:6,1:2,2:5,3:5,4:4,5:5,6:6,7:3,8:7,9:6}
for _ in range(n):
a=int(input())
if a<2:
print(-1)
elif a%2==0:
m=a//2
print("1"*m)
else:
m = a // 2
print("7"+"1"*(m-1))