给你 n 根火柴棍,你可以拼出多少个形如 A+B=C 的等式?等式中的 A 、 B 、 C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0 )。用火柴棍拼数字 0\sim9 的拼法如图所示:
注意:
加号与等号各自需要两根火柴棍;
如果 A\neq B ,则 A+B=C 与 B+A=C 视为不同的等式( A,B,C\geq0 );
n 根火柴棍必须全部用上。
一个整数 n(1 \leq n\leq 24) 。
一个整数,能拼成的不同等式的数目。
14
2
18
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 。
【问题提示】 首先,预处理每个数字(0~9)需要用几根火柴棒,存储在数组 f 中。 然后,穷举 a 和 b,算出它们的和 c,再判断下列约束条件是否成立:f (a)+ f (b)+ f (c)= n-4。 现在的问题是:a 和 b 的范围有多大?可以发现尽量用数字 1 拼成的数比较大,分析可知最多不会超过 1111。 程序实现时,分别用循环预处理好所有两位数、三位数、四位数构成所需要的火柴棒数量。