本题关键主要同时满足两个等式 1.数学等式 a+b=c 2.每个数所需火柴棒之和=所拥有火柴棒-4(+,=的火柴棒)
#include <stdio.h>
#include <stdlib.h>
int fun(int x);
int main()
{
int a,b,c;
int m,sum=0;
scanf("%d",&m);
for(a=0;a<1111;a++) //此处为1111因为m最大为24根,取用棒最少的火柴,数字1为2根,1111为8根,故每个数最大不超过1111
{
for(b=0;b<1111;b++)
{
c=a+b;
if(fun(a)+fun(b)+fun(c)==m-4) //调用函数对每个数进行火柴棒统计 -4是+号和=号
{
//printf("%d+%d=%d\n",a,b,c);测试数据用
sum++; //计数器
}
}
}
printf("%d",sum);
return 0;
}
int fun(int x)
{
int s=0;
int f[10]={6,2,5,5,4,5,6,3,7,6}; //此处用数组记录每个数所需火柴棒
while(x/10!=0) //判断若为为两位数,不同的操作,取出除第一位数其他位
{
s+=f[x%10];
x=x/10;
}
s+=f[x]; //当只有一位数或者为第一位时
return s;
}
加油,一点点进步~