洛谷-OJ-P1149 火柴棒等式(学习笔记)

本题关键主要同时满足两个等式 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;
}
加油,一点点进步~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章