ahalei_22
来源:互联网 发布:淘宝联盟用店铺红包 编辑:程序博客网 时间:2024/06/08 14:47
给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:
注意:
1. 加号与等号各自需要两根火柴棍
2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)
3. n根火柴棍必须全部用上
当n=14的时候,只能拼成2种不同的等式(2个等式为0+1=1和1+0=1。)
请问当n=20的时候,能拼成多少种不同的等式?
#!/usr/bin/env python3# -*- coding: utf-8 -*-"""@author: vllen"""dict_m = {2:[1], 3:[7], 4:[4], 5:[2, 3, 5], 6:[0, 6, 9], 7:[8]}def sep(num): '''一个数分为两个数的和,且x,y满足2~8 ''' two = [] for x in range(num+1): for y in range(num+1-x): if x in range(2, 8) and y in range(2, 8): if x+y == num: ls = [] ls.append(x) ls.append(y) two.append(ls) return twodef m2v(m):#依赖sep函数 '''2~8仍能进行分裂,成为一个十位数,故没有范围限制 ''' result = [] for pv in sep(m):#遍历所有的两两火柴数量组合 item1, item2 = pv for var1 in dict_m[item1]: if var1 != 0:#十位不能是零 for var2 in dict_m[item2]: value = 10 * var1 + var2 result.append(value) if m < 8:#2~8不要遗漏个位数 for x28 in dict_m[m]: result.append(x28) return list(set(result))def match2count(number): '''main ''' count = 0 for match1 in range(2, number-4+1-4): for match2 in range(2, number-4+1-match1-2): match3 = number -4 - match1 - match2 for res1 in m2v(match1): for res2 in m2v(match2): for res3 in m2v(match3): if res1 + res2 == res3: count += 1 print('{0}+{1}={2}......{3}'.format(res1, res2, res3, count)) return countmatch2count(20)
0 0
- ahalei_22
- 总结ASP.NET MVC Web Application中将数据显示到View中的几种方式
- Java虚拟机详解----常用JVM配置参数
- ural1519 Formula 1
- nyoj585 取石子(六) Nimm博弈
- springmvc怎么重定向,从一个controller跳到另一个controller
- ahalei_22
- 技术干货-`setValue`和`setObject`的区别
- Es官方文档整理-1.概览
- 把已经存在的volume挂载到instance
- dreamwaver cs6绿色免安装版
- Servlet(二)
- Es官方文档整理-2.分片内部原理
- C++第一节
- 更新失败(错误:3)检谷歌浏览器 查更新时出错:无法启动更新检查(错误代码为 3: 0x80040154)。