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

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

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

1307323146.jpg

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值