【问题描述】给你n根火柴棒,求拼出多少个形如“A+B=C”的等式。等式中的A,B,C是用火柴棒拼出的整数(若该数非零,则最高位不是零)。用火柴棒拼出数字0~9的拼法,如下图所示。
要求:(1)加号与等号各自需要两根火柴棒;(2)如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C≥0);(3)n根火柴棒必须全部用上。
【输入样例1】14
【输出样例1】2
【输入样例2】18
【输出样例2】9
C++代码如下:
#include<iostream>
using namespace std;
int need[]={6,2,5,5,4,5,6,3,7,6};
int BV[10000];
int match(int x)
{
int sum=0;
if(x==0) return 6;
while(x>0)
{
int ret=x%10;
sum+=need[ret];
x/=10;
}
return sum;
}
void Maad()
{
for(int i=0;i<=2000;i++)
{
BV[i]=match(i);
}
}
int main()
{
int n,ans=0;
cin>>n;
Maad();
for(int i=0;i<=1000;i++)
{
for(int j=i;j<=1000;j++)
{
int a=BV[i];
int b=BV[j];
int d=BV[i+j];
if(a+b>n-6)
{
continue;
}
if(a+b+d+4==n&&i!=j)
{
ans+=2;
}
else if(a+b+d+4==n&&i==j)
{
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}