A,B,C,D分别为不同的整数,满足以下乘法公式,求A,B,C,D的值

问题:A,B,C,D分别为不同的整数,满足以下乘法公式,求A,B,C,D的值

 

解题思路:

  由题意可知A,B,C,D为不同的整数,则A!=B,A!=C,A!=D,B!=C,B!=D,C!=D

再由给出公式的解题步骤可知A,B,C,D其中一位数是0,则C=0,因公式中给出的9可得出A=3,也因此限制了这个四位数的千位是3;

再看解题步骤可知第一行代表:D*ABCD,第二行代表:B*ABCD,第三行代表:A*ABCD,因都是四位数,以此为限制条件。

最后看结果数为八位数,说明9往前进了一位也表明第二行的千位数+第三行的百位数>10.

综上述条件分析为条件下面使用使用Node.js代码实现:

let count=3999     //因条件限制千位为3,则从3999开始
let a,b,c,d,e,f,fx,ex
for(let num=3000;num<count;num++){
    d=num/1%10;                            //d表示num的个位数
    c=parseInt(num/10%10);          //c表示num的十位数
    b=parseInt(num/100%10);        //b表示num的百位数
    a=parseInt(num/1000%10);    //a表示num的千位数
    
    e=a*num      //e表示解题步骤第行的值
    f=b*num    //f表示解题步骤第二行的值
    g=d*num   //g表示解题步骤第一行的值
    if(g.toString().length==4&&f.toString().length==4&&e.toString().length==4){
        fx=parseInt(f/1000%10);   //fx表示解题步骤的第二行的千位数
        let x=parseInt(e/1000%10);//e表示解题步骤的第三行的千位数9
        ex=parseInt(e/100%10);//ex表示解题步骤的第三行的百位数
        if(x==9){
            if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d&&c==0){
                console.log('a=>'+a+' b=>'+b+' c=>'+c+' d=>'+d)
            }
            
        }
    }
}
console.log('done')                        

最后输出为:

PS D:\NodePack\Node_base\nodejsStudo> node .\zushu.js
a=>3 b=>2 c=>0 d=>1
done
PS D:\NodePack\Node_base\nodejsStudo> 

因此:A=3;B=2;C=0;D=1

posted @ 2021-04-14 15:59  墨染暖栀  阅读(28)  评论(0编辑  收藏  举报
/* 看板娘 */ /* 粒子吸附*/