火柴棍等式--枚举

来源:互联网 发布:海岛奇研究所升级数据 编辑:程序博客网 时间:2024/03/29 09:23

火柴棍等式

要求

用m(m <= 24)根火柴棍拼出A+B=C的等式,数字非零,则最高位不能是0,加号和等号各用了两根火柴棍,问可以拼出多少个不同等式?

思路

枚举法

代码

#include <stdio.h>#define M 18int fun(int x) {    int a[10] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};    int sum = 0;    while(x / 10 != 0) {        sum += a[x%10];        x = x/10;    }    sum += a[x];    return sum; }int main(){    int a, b, c;        for (int a = 0; a < 11111; ++a) { //M最大24,20根火柴最多组成10个1        for (int b = 0; b < 11111; ++b) {            c = a + b;            if (fun(a) + fun(b) + fun(c) == M - 4){                printf("%d + %d = %d\n", a, b, c);            }        }    }    return 0;}
0 0