吸血鬼數字(java)

2021-07-01 21:11:22 字數 965 閱讀 3347

*吸血鬼數字是指位數為偶數的數字,可以由一堆數字相乘而得到,而這對數字各包含乘積的一半位數的數字,其中從最初的數字中選取的數字可以任意排列。以兩個0結尾的數字是不允許的

例如,下列數字都是吸血鬼數字

1260=21*60 1827=21*87 2187=27*81

寫乙個程式,找出所有4位的吸血鬼數字*

void test()}}

system.out.println("總共比較"+count+"次");

}}

關於演算法的解釋,來自網友mt502

假設val = 1000a + 100b + 10c + d, 因為滿足val = x * y, 則有x = 10a + b, y = 10c + d

則val - x - y = 990a + 99b + 9c = 9 * (110a + 11b + c), 所以val - x - y能被9整除。

所以滿足該條件的數字必定能被9整除,所以可以直接過濾其他數字。

我准許做一下

x*y = val = 1000a + 100b + 10c + d;

我們假設

x = 10a + b, y = 10c + d

則 x*y-x-y

= val - x-y

= (1000a + 100b + 10c + d) - (10a+b) - (10c +d) = 990a + 99b + 9c

= 9 * (110a + 11b + c);

對於別的組合可能性,結果一樣,比如

x=10c+a; y=10d+b;

x*y-x-y

= val - x-y

= (1000a + 100b + 10c + d) - (10c+a) - (10d +b) = 999a + 99b -9d

= 9 * (110a + 11b -d);

當然也能被9整除了

吸血鬼數字(JAVA)

吸血鬼數字是指位數為偶數的數字,可以由一對數字相乘而得到,而這對數字各包含乘積的一半位數的數字,其中從最初的數字中選取的數字可以任意排序。以兩個0結尾的數字是不允許的,例如,下列數字都是 吸血鬼 數字 1260 21 60,1827 21 87.寫乙個程式,找出4為數的所有吸血鬼數字。public ...

吸血鬼數字

吸血鬼數字是指位數為偶數的數字,可以由一對數字相乘而得到,而這對數字各包含乘積的一半位數的數字,其中從最初的數字中選取的數字可以任意排序。以兩個0結尾的數字是不允許的,例如,下列數字都是 吸血鬼 數字 1260 21 60 1827 21 87 2187 27 81 1994年柯利弗德 皮寇弗在us...

吸血鬼數字

吸血鬼數字指的是位數為偶數的數字,可以由一對數字相乘而得到,而這對數字則各包含乘積一般位數的數字,其中從最初的數字中選取的數字可以任意排序。以兩個0結尾的數字是不允許的,例如下面的吸血鬼數字 1260 21 x 60 1827 21 x 87 2187 27 x 81 下面的演算法,是找出4位數的所...