[NOIP2008 提高组] 火柴棒等式
感谢题目提供者CCF_NOI
题目描述
给你 n 根火柴棍,你可以拼出多少个形如 A+B=C 的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0)。用火柴棍拼数字 的拼法如图所示:
注意:
1. 加号与等号各自需要两根火柴棍;
2. 如果 ,则 与 视为不同的等式();
3. $n$ 根火柴棍必须全部用上。
输入格式
一个整数 。
输出格式
一个整数,能拼成的不同等式的数目。
样例 #1
样例输入 #1
14
样例输出 #1
2
样例 #2
样例输入 #2
18
样例输出 #2
9
提示
【输入输出样例 1 解释】
2 个等式为 0+1=1 和 1+0=1。
【输入输出样例 2 解释】
9 个等式为
0+4=4、0+11=11、1+10=11、2+2=4、2+7=9、4+0=4、7+2=9、10+1=11、11+0=11。
noip2008 提高第二题
题解
number = {1:2,2:5,3:5,4:4,5:5,6:6,7:3,8:7,9:6}
num = {2:[1],3:[7],4:[4],5:[2,3,5],6:[0,6,9],7:[8],8:[],9:[],10:[],11:[]}
n = int(input())
tem = []
count = set()
for i in range(10,1001):
tem = list(str(i))
stick = 0
for _ in tem:
sticks += origin_num[int(_)]
if stick <= 11:
num[stick].append(i)
for i in range(2,12):
for j in range(i,12):
k = n - i - j - 4
if k <= 11 and k >= 2:
for i in num[i]:
for j in num[j]:
if i + j in num[k]:
if i != j:
count.add((i,j))
count.add((j,i))
else:
count.add((i,j))
print(len(count))
标签:11,count,洛谷,样例,NOIP2008,num,等式,火柴,P1149
From: https://blog.csdn.net/mmd666/article/details/139132107