P1149 火柴棒等式
题目描述
给你n根火柴棍,你可以拼出多少个形如“A+B=CA+B=CA+B=C”的等式?等式中的AAA、BBB、CCC是用火柴棍拼出的整数(若该数非零,则最高位不能是000)。用火柴棍拼数字0−90-90−9的拼法如图所示:
注意:
-
加号与等号各自需要两根火柴棍
-
如果A≠BA≠BA≠B,则A+B=CA+B=CA+B=C与B+A=CB+A=CB+A=C视为不同的等式(A,B,C>=0A,B,C>=0A,B,C>=0)
-
nnn根火柴棍必须全部用上
输入输出格式
输入格式:
一个整数n(n<=24)n(n<=24)n(n<=24)。
输出格式:
一个整数,能拼成的不同等式的数目。
1 #include<iostream> 2 int num[10] = { 6,2,5,5,4,5,6,3,7,6 }; 3 int getsum(int a) { 4 int sum = 0; 5 do { 6 sum += num[a % 10]; 7 a /= 10; 8 } while (a != 0); 9 return sum; 10 } 11 int main() { 12 using namespace std; 13 int x, sum = 0; 14 cin >> x; 15 x -= 4; 16 for (int i = 0; i < 999; i++) { 17 for (int j = 0; j < 1000; j++) { 18 if (getsum(i)+getsum(j)+getsum(i+j) == x) { 19 sum++; 20 } 21 } 22 } 23 cout << sum; 24 return 0; 25 }