火柴棒问题

这题难道不高,关键在于思路,其实+,=个占4个火柴棒,而他们是必须存在的,所以对火柴棒数-4就简单了,在枚举上,我们可以枚举2个数,第三个数就是a+b啦!根据只有20根火柴棒(删掉了=和+),我们能知道枚举数不会超过1111,有些童鞋只枚举到了1000,难道是我错了???

,注意全部火柴必须用上,该数非零,则最高位不能是0

Code

#include <iostream>  
    using namespace std;  
    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除以10不等于0的话,说明该数至少有两位  
        {  
            num+=f[x%10];   //加上该位火柴棍数  
            x=x/10;  
        }  
        num+=f[x];     //加上最高位的火柴棍数  
        return num;  
    }  
    int main()  
    {  
         int a,b,c,m,sum=0;     
         cin>>m;        //火柴棍总个数  
         for(a=0;a<=1111;a++)  //开始枚举  
         {  
             for(b=0;b<=1111;b++)  
             {  
                 c=a+b;  
                 if(fun(a)+fun(b)+fun(c)==m-4)  //去掉+和=
                     sum++;  

             }  
         }  
         cout<<sum<<endl;  
        return 0;  
    }  

猜你喜欢

转载自blog.csdn.net/qq_39984146/article/details/79162685