吸血鬼デジタルJAVAプログラム
1851 ワード
『Thinking in Java』を見て、第4章の一番後ろの練習問題(練習10)吸血鬼数字:
吸血鬼数字とは、偶数の桁数を指し、1対の数字を乗算して得ることができるが、この数字には積の半分の桁数の数字が含まれており、最初の数字から選択した数字は任意にソートすることができる.2つの0で終わる数字は許されません.たとえば、次の数字は「吸血鬼」の数字です.
1260 = 21 * 60 1827 = 21 * 87 2187 = 27 * 81
自分で書いたコードは、アルゴリズムは簡単ですが、要求に達しています.
4桁の数字は全部で7組あります.
1260=21x60
1395=15x93
1435=41x35
1530=51x30
1827=87x21
2187=27x81
6880=86x80
吸血鬼数字とは、偶数の桁数を指し、1対の数字を乗算して得ることができるが、この数字には積の半分の桁数の数字が含まれており、最初の数字から選択した数字は任意にソートすることができる.2つの0で終わる数字は許されません.たとえば、次の数字は「吸血鬼」の数字です.
1260 = 21 * 60 1827 = 21 * 87 2187 = 27 * 81
自分で書いたコードは、アルゴリズムは簡単ですが、要求に達しています.
public class xxgNUM {
/**
*
*
* @param num
* @return
*/
private boolean xxg(int num) {
int a[] = new int[4];
//
a[0] = (int) num / 1000;
//
a[1] = (int) ((num - a[0] * 1000) / 100);
//
a[2] = (int) ((num - a[0] * 1000 - a[1] * 100) / 10);
//
a[3] = (int) (num - a[0] * 1000 - a[1] * 100 - a[2] * 10);
// 0,
if (a[2] == 0 && a[3] == 0) {
return false;
}
//
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
for (int k = 0; k < 4; k++) {
for (int l = 0; l < 4; l++) {
//
if (i != j && i != k && i != l && j != k && j != l
&& j != l && k != l) {
int n1 = a[i] * 10 + a[j];
int n2 = a[k] * 10 + a[l];
if (n1 * n2 == num) {
System.out.println(num + "=" + n1 + "x" + n2);
return true;
}
}
}
}
}
}
return false;
}
//
public static void main(String[] args) {
xxgNUM xxg = new xxgNUM();
for (int num = 1000; num < 10000; num++) {
xxg.xxg(num);
}
}
}
4桁の数字は全部で7組あります.
1260=21x60
1395=15x93
1435=41x35
1530=51x30
1827=87x21
2187=27x81
6880=86x80