600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C语言编程验证卡布列克 C语言生趣程序百例精解之JAVA实现(83):卡布列克常数...

C语言编程验证卡布列克 C语言生趣程序百例精解之JAVA实现(83):卡布列克常数...

时间:2020-02-02 16:31:53

相关推荐

C语言编程验证卡布列克 C语言生趣程序百例精解之JAVA实现(83):卡布列克常数...

C语言趣味程序百例精解之JAVA实现(83):卡布列克常数

C语言趣味程序百例精解之JAVA实现:

public class Test83{

public static void main(String args[]){

new Test83(). KaBuLieKe83(4321,0);

}

/**

* 83。卡布列克常数,挺好玩,实现一下

*/

public void KaBuLieKe83(int n, int count) {

int cha = getTheMaxOrMin(n, 1) - getTheMaxOrMin(n, 0);

System.out.println(count + ":" + getTheMaxOrMin(n, 1) + "-"

+ getTheMaxOrMin(n, 0) + " = " + cha);

count++;

if (n == 6174) {

System.out.println("I did it 6174");

} else {

KaBuLieKe83(cha, count);

}

}

/**

* 获取重新排列后最大的数,如2310,得到3210,暂时只要四位

*/

public int getTheMaxOrMin(int n, int maxOrMin) {

if (n < 1000 || n > 9999)

return -1;

int a = getThe(n, 4);

int b = getThe(n, 3);

int c = getThe(n, 2);

int d = getThe(n, 1);

int temp = 0;

int[] list = new int[] { a, b, c, d };

for (int i = 0; i < 4; i++) {

for (int j = i; j < 4; j++) {

if (maxOrMin == 1 ? (list< list[j]) : (list> list[j])) {

temp = list;

list= list[j];

list[j] = temp;

}

}

}

return list[0] * 1000 + list[1] * 100 + list[2] * 10 + list[3];

}

/**

* 获取N右数第i位

*/

public int getThe(int num, int i) {

if (i > getBitCount(num) || i < 1)

return -1;

return (num % ((int) Math.pow(10, i))) / (int) Math.pow(10, i - 1);

}

/**

* 获取一个数的位数

*/

public int getBitCount(int n) {

int i = 1;

while (n / 10 > 0) {

i++;

n /= 10;

}

return i;

}

}

C:\bat>java Test83

0:4321-1234 = 3087

1:8730-378 = 8352

2:8532-2358 = 6174

3:7641-1467 = 6174

I did it 6174

分享自:/dearbaba/article/details/6927515

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。