有趣的代码题--TC的火柴

题目描述

今天,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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值