P1149 火柴棒等式
题目描述
给你n根火柴棍,你可以拼出多少个形如“A+B=CA+B=C”的等式?等式中的AA、BB、CC是用火柴棍拼出的整数(若该数非零,则最高位不能是00)。用火柴棍拼数字0-90−9的拼法如图所示:
注意:
加号与等号各自需要两根火柴棍
如果A≠BA≠B,则A+B=CA+B=C与B+A=CB+A=C视为不同的等式(A,B,C>=0A,B,C>=0)
nn根火柴棍必须全部用上
输入输出格式
输入格式:
一个整数n(n<=24)n(n<=24)。
输出格式:
一个整数,能拼成的不同等式的数目。
先简单的分析一下,去掉+和=还有20个火柴。然后每个数字用的火柴数如下cost[]={6,2,5,5,4,5,6,3,7,6}
20/2=10,所以最多有10个数字,然后由于要拆成3个数,假设3d表示三位数,由于3d+4d>=4d 有11个数字,所以拆分的数字a+b=c,
a,b一定是<=3d,c可能是4d。
想到这里可以开始写暴力了。
for一遍a,for一遍b然后check c。
复杂度已经可以承受了。
细节
1.n<=4
2.有0的时候