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
分享自:http://blog.csdn.net/dearbaba2011/article/details/6927515
分享到:
相关推荐
《C语言趣味程序百例精解》是一本专注于C语言编程实践的教程,旨在通过丰富的实例帮助学习者深入理解和掌握C语言。CHM是Compiled Help Manual的缩写,是一种由微软开发的帮助文档格式,通常用于软件的用户手册或技术...
《C语言趣味程序百例精解》是一本深入浅出的C语言编程实践教程,它以生动有趣的实例为载体,引领读者在解决实际问题中掌握C语言的核心概念和技术。本书旨在提升读者对C语言的理解与应用能力,通过一系列精心设计的...
《C语言趣味程序百例精解》是一本深入浅出的C语言学习教程,它将枯燥的编程理论与趣味性的实例相结合,旨在帮助初学者更好地理解和掌握C语言的基本概念和编程技巧。书中涵盖了大量的实例,这些实例既有趣又实用,...
《C语言趣味程序百例精解》是一本深入浅出的C语言学习指南,它将枯燥的编程理论与趣味性的实例相结合,旨在帮助读者更好地理解和掌握C语言的精髓。本书覆盖了C语言的基础语法、控制结构、数据结构、函数、指针等核心...
C语言趣味程序百例精解 算法与数据结构 经典算法
《C语言趣味程序百例精解》是一本旨在帮助初学者和进阶者深入理解C语言编程的书籍,通过丰富的实例解析,使学习过程更具趣味性。这本书的PDF扫描版提供了一个方便的电子形式,让读者可以随时随地进行学习。下面我们...
该资源只包含论文文档资料,电子设计论文C语言趣味程序百例精解该资源只包含论文文档资料,电子设计论文C语言趣味程序百例精解提取方式是百度网盘分享地址