*吸血鬼數字是指位數為偶數的數字,可以由一堆數字相乘而得到,而這對數字各包含乘積的一半位數的數字,其中從最初的數字中選取的數字可以任意排列。以兩個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位數的所...