两种形式的乘式还原

形式一:

在这里插入图片描述

1. 思路分析:

(1)定义一个数组a[4],数组里面存放的值为2,3,5,7;依次对每位数进行穷举,将数组里面的数赋给每位数;利用穷举所求出的值可推算出乘式的第四、第五、最后一行的数字;
(2)求出各数后加一个判断条件:判断所求的数是否满足各位为2或3或5或7,因为数太多,所以构造一个子函数用于做判断条件;
(3)按题中所给的乘式的形式输出相应的数字。

2. 源代码:

#include <stdio.h>
int ps(int n)
{
    int t;
    while (n)
    {
        t = n % 10;
        if (t == 2 || t == 3 || t == 5 || t == 7)
        {
            n = n / 10;
        }
        else
            return 0;
    }
    return 1;
}
void main()
{
    int i, j, k, g, h, num, num1, num2, num3, num4, fig, fig1, fig2, fig3, fig4, sum, sum1, sum2, sum3, sum4, sum5, A, B, C, D, E;
    int a[4] = { 2,3,5,7 };
    for (i = 0; i < 4; i++)
    {
        A = a[i];
        for (j = 0; j < 4; j++)
        {
            B = a[j];
            for (k = 0; k < 4; k++)
            {
                C = a[k];
                for (g = 0; g < 4; g++)
                {
                    D = a[g];
                    for (h = 0; h < 4; h++)
                    {
                        E = a[h];
                        num = (A * 100 + B * 10 + C)*E;
                        fig = (A * 100 + B * 10 + C)*D;
                        sum = num + fig * 10;
                        if (num > 221 && fig > 221 && ps(num) && ps(fig) && sum > 22221 && ps(sum))
                        {
                            num1 = num / 1000;
                            num2 = num / 100 % 10;
                            num3 = num / 10 % 10;
                            num4 = num % 10;
                            fig1 = fig / 1000;
                            fig2 = fig / 100 % 10;
                            fig3 = fig / 10 % 10;
                            fig4 = fig % 10;
                            sum1 = sum / 10000;
                            sum2 = sum / 1000 % 10;
                            sum3 = sum / 100 % 10;
                            sum4 = sum / 10 % 10;
                            sum5 = sum % 10;
                            printf("       %d%d%d\n", A, B, C);
                            printf("*        %d%d\n", D, E);
                            printf("--------------\n");
                            printf("     %d%d%d%d\n", num1, num2, num3, num4);
                            printf("   %d%d%d%d \n", fig1, fig2, fig3, fig4);
                            printf("--------------\n");
                            printf("   %d%d%d%d%d\n", sum1, sum2, sum3, sum4, sum5);
                            printf("\n");
                        }
                    }
                }
            }
        }
    }

}

形式二:(仿照形式一作答)

在这里插入图片描述

源代码:

#include <stdio.h>
int main(void)
{
  int A,B,C,D,E,F,num,fig,dig,num1,num2,num3,num4,fig1,fig2,fig3,fig4,dig1,dig2,dig3,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++)
            {
              num=(A*100+B*10+C)*F;
              fig=(A*100+B*10+C)*E;
              th=(A*100+B*10+C)*D;
              num1=num/1000;
              num2=num/100%10;
              num3=num/10%10;
              num4=num%10;
              fig1=fig/1000;
              fig2=fig/100%10;
              fig3=fig/10%10;
              fig4=fig%10;
              dig1=dig/100;
              dig2=dig/10%10;
              dig3=dig%10;
              if(num1>=1 && num1<=4 && num2<=4 && num3<=4 && num4<=4)
                if(fig1>=1 && fig1<=4 &&fig2<=4 && fig3>=5 && fig4>=5)
                  if(dig1>=5 && dig2<=4 && dig3<=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\n",A,B,C);
                      printf("   *%d%d%d\n",D,E,F);
                      printf("----------\n");
                      printf("  %d%d%d%d\n",num1,num2,num3,num4);
                      printf(" %d%d%d%d \n",fig1,fig2,fig3,fig4);
                      printf(" %d%d%d   \n",dig1,dig2,dig3);
                      printf("----------\n");
                      printf("%d%d%d%d%d\n",sum1,sum2,sum3,sum4,sum5);
                      printf("");
                    }
                  }
            }
}
发布了28 篇原创文章 · 获赞 13 · 访问量 466

猜你喜欢

转载自blog.csdn.net/yo_u_niverse/article/details/105269420