• 乘式还原


    题目

    A代表数字0到9中的前五个数字,Z代表后五个数字,请还原下列乘式。
        AZA
       *AAZ
    ----------
      AAAA
    AAZZ
    ZAA
    ----------
    ZAZAA

    输出格式要求:
    " %d "
    "* %d%d "
    "........................ "
    " %d "
    " %d "
    "........................ "
    " %d "

    程序运行示例如下:
        372
       *246
    ----------
      2232
    1488
    744
    ----------
    91512

    暴力解法思路

    1. 首先,穷举了这两个三位数的所有可能性:通过观察可以得到进行相乘的是两个三位数,也就是六个数字,使用六个嵌套循环,每个循环穷举一个位的所有可能性(如果是A就是04,如果是Z就是59)。
    2. 再者,判断乘式中间部分的每个表达式是否满足A在04且Z在59:将第一个三位数分别与第二个三位数的个位、十位、百位相乘,得到三个值,分离这三个值的每一位,并将每一位对照乘式判断是否满足条件。
    3. 最后,判断乘式末尾部分表达式是否满足A在04且Z在59:将第二步算出的三个值相加得到一个新的值,分离这个新值的每一位,判断新值的每一位是否满足条件。

    程序代码(C语言)

    #include <stdio.h>
    int main(void)
    {
        int A, B, C, D, E, F, fi, se, th, fi1, fi2, fi3, fi4, se1, se2, se3, se4, th1, th2, th3, sum = 0, sum1, sum2, sum3, sum4, sum5;
        for(A = 1; A <= 4; A++)
            for(B = 5; B <= 9; B++)
                for(C = 0; C <= 4; C++)
                    for(D = 1; D <= 4; D++)
                        for(E = 0; E <= 4; E++)
                            for(F = 5; F <= 9; F++)
                            {
                                fi = (A * 100 + B * 10 + C) * F;
                                se = (A * 100 + B * 10 + C) * E;
                                th = (A * 100 + B * 10 + C) * D;
                                fi1 = fi / 1000;
                                fi2 = fi / 100 % 10;
                                fi3 = fi / 10 % 10;
                                fi4 = fi % 10;
                                se1 = se / 1000;
                                se2 = se / 100 % 10;
                                se3 = se / 10 % 10;
                                se4 = se % 10;
                                th1 = th / 100;
                                th2 = th / 10 % 10;
                                th3 = th % 10;
                                if(fi1 >= 1 && fi1 <= 4 && fi2 <= 4 && fi3 <= 4 && fi4 <= 4)
                                {
                                    if(se1 >= 1 && se1 <= 4 && se2 <= 4 && se3 >= 5 && se4 >= 5)
                                    {
                                        if(th1 >= 5 && th2 <= 4 && th3 <= 4)
                                        {
                                            sum = (A * 100 + B * 10 + C) * (D * 100 + E * 10 + F);
                                            sum1 = sum / 10000;
                                            sum2 = sum / 1000 % 10;
                                            sum3 = sum / 100 % 10;
                                            sum4 = sum / 10 % 10;
                                            sum5 = sum % 10;
                                            if(sum1 >= 5 && sum2 <= 4 && sum3 >= 5 && sum4 <= 4 && sum5 <= 4)
                                            {
                                                printf("    %d%d%d
    ", A, B, C);
                                                printf("   *%d%d%d
    ", D, E, F);
                                                printf("----------
    ");
                                                printf("  %d%d%d%d
    ", fi1, fi2, fi3, fi4);
                                                printf(" %d%d%d%d 
    ", se1, se2, se3, se4);
                                                printf(" %d%d%d   
    ", th1, th2, th3);
                                                printf("----------
    ");
                                                printf("%d%d%d%d%d
    ", sum1, sum2, sum3, sum4, sum5);
                                                printf("");
                                            }
                                        }
                                    }
                                }
                            }
    }
    
    
  • 相关阅读:
    移位运算符<<与>>
    在线颜色选择器
    CSS鼠标指针cursor样式
    JavaScript实现自定义右键菜单
    如何去掉ul和li前面的小黑点
    转载:利用本地存储实现记录滚动条的位置
    CSS中样式覆盖优先顺序
    断言类
    MQ发送定时消息
    看代码所学3
  • 原文地址:https://www.cnblogs.com/maskwolf/p/10018935.html
Copyright © 2020-2023  润新知