用n根火柴拼成A+B=C 的形式;(n<=24)
- =用两根 +用两根
- 火柴要全部用完
- 如果A!=B,则A+B=C和B+A=C是两个等式
分析:
n<=24,"=“和”+"用掉四根,则还剩余20根,1用到的火柴最少,所以,20根火柴的最多只能拼出10个1,A+B=C每一个数都不能超过11111,。
#include <stdio.h>
int fun(int x)
{
int num=0;//用来计数的变量,火柴的数量
int f[10]={6,2,5,5,4,5,6,3,7,6};//用一个数组来记录0-9这几个数字所用的火柴数量
while ((x/10)!=0)//说明这个数不止两位数
{
//获得x的个位数并将次数所用到的火柴数加入num中
num += f[x%10];
x=x/10;//去掉末尾的数字
}//此时输入的x 已经是一位数
num += f[x];
return num;
}
int main(int argc, char const *argv[])
{
int a,b,c,i,m,sun=0;
printf("Input the num:
");
scanf("%d",&m);
//开始枚举A和B
for(a=0;a<1111;a++)
{
for(b=0;b<1111;b++)
{
c=a+b;
if(fun(a)+fun(b)+fun(c)==m-4)
{
printf("%d+%d=%d
",a,b,c);
sun++;
}
}
}
printf("total:%d",sun);
return 0;
}
运行结果: