zoukankan      html  css  js  c++  java
  • 啊哈,算法自学记——5th

    用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;
    }
    
    

    运行结果:
    在这里插入图片描述

  • 相关阅读:
    十大排序算法
    SQL优化指南
    Python基础-类与对象
    Python基础-函数
    Python基础-字典
    Python基础-字符串
    Python基础-列表
    以太坊智能合约开发框架Truffle
    比特币钱包搭建与使用
    矩阵的压缩存储
  • 原文地址:https://www.cnblogs.com/hhsxy/p/14018430.html
Copyright © 2011-2022 走看看