读书人

C语言生趣程序百例精解之JAVA实现(83)

发布时间: 2012-10-06 17:34:01 作者: rapoo

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

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


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

分享自:http://blog.csdn.net/dearbaba2011/article/details/6927515

读书人网 >C语言

热点推荐