题目描述
给你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(n<=24)。
输出描述:
共一行,表示能拼成的不同等式的数目。
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int num[]={,,,,,,,,,};
int n,s=;
cin>>n;
n-=;
int i,j;
int x,y,z,a,b,c;
int flag1=,flag2=,flag3=;
for(i=;i<=;i++)
{
for(j=;j<=;j++)
{
x = i;
y = j;
z = x + y;
flag1=;
flag2=;
flag3=;
a=;b=;c=;
while(x) //注意数为0无法进入循环
{
a+=num[x%];
x/=;
flag1 = ;
}
if(flag1==)
a+=num[];
while(y)
{
b+=num[y%];
y/=;
flag2 = ;
}
if(flag2==)
b+=num[];
while(z)
{
c+=num[z%];
z/=;
flag3 = ;
}
if(flag3==)
c+=num[];
if(a+b+c==n)
{
s++;
} }
}
cout<<s;
}
总结
根据题目规定的24根火柴估计等式的大概取值范围(1000以内),用循环枚举两个加数,再看等式火柴数是否符合条件