卡布列克常数的java实现

2024-06-08 16:38
文章标签 java 实现 常数 卡布列

本文主要是介绍卡布列克常数的java实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Test83.java
此题来源为 廖永鹏的 贵阳面试题.
主要目的考算法.
[quote]C语言趣味程序百例精解之JAVA实现(83):卡布列克常数
http://blog.csdn.net/dearbaba2011/article/details/6927515
[/quote]
有改进


package interviewTest;

import java.util.Scanner;

/**
在0到9这些数字中,任选4个数,组成最大的和最小的四位数,然后两数相减;再把结果的数字重新组成一个最大
的数与最小的数,再次相减;.这样不断重复,就会出现一个神秘数,这个神秘数是几?
6174

追答:
9876-1023=8853-3588=5265 6552-2556=3992 9932-2399=7533-3357=4176 7641-1467=6174 7641-1467=6174
* @author lengzl
* @email lengzhuolin@anjia365.com
* @create 2017年2月10日 下午10:09:27
*/
public class Test83{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("Enter a number(non rep):");
int num = in.nextInt();
//4321
new Test83(). KaBuLieKe83(num,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[i] < list[j]) : (list[i] > list[j])) {
temp = list[i];
list[i] = 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

这篇关于卡布列克常数的java实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1042735

相关文章

Java如何根据word模板导出数据

《Java如何根据word模板导出数据》这篇文章主要为大家详细介绍了Java如何实现根据word模板导出数据,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... pom.XML文件导入依赖 <dependency> <groupId>cn.afterturn</groupId>

利用Python实现可回滚方案的示例代码

《利用Python实现可回滚方案的示例代码》很多项目翻车不是因为不会做,而是走错了方向却没法回头,技术选型失败的风险我们都清楚,但真正能提前规划“回滚方案”的人不多,本文从实际项目出发,教你如何用Py... 目录描述题解答案(核心思路)题解代码分析第一步:抽象缓存接口第二步:实现两个版本第三步:根据 Fea

Java应用如何防止恶意文件上传

《Java应用如何防止恶意文件上传》恶意文件上传可能导致服务器被入侵,数据泄露甚至服务瘫痪,因此我们必须采取全面且有效的防范措施来保护Java应用的安全,下面我们就来看看具体的实现方法吧... 目录恶意文件上传的潜在风险常见的恶意文件上传手段防范恶意文件上传的关键策略严格验证文件类型检查文件内容控制文件存储

Go语言使用slices包轻松实现排序功能

《Go语言使用slices包轻松实现排序功能》在Go语言开发中,对数据进行排序是常见的需求,Go1.18版本引入的slices包提供了简洁高效的排序解决方案,支持内置类型和用户自定义类型的排序操作,本... 目录一、内置类型排序:字符串与整数的应用1. 字符串切片排序2. 整数切片排序二、检查切片排序状态:

浅析Java如何保护敏感数据

《浅析Java如何保护敏感数据》在当今数字化时代,数据安全成为了软件开发中至关重要的课题,本文将深入探讨Java安全领域,聚焦于敏感数据保护的策略与实践,感兴趣的小伙伴可以了解下... 目录一、Java 安全的重要性二、敏感数据加密技术(一)对称加密(二)非对称加密三、敏感数据的访问控制(一)基于角色的访问

python利用backoff实现异常自动重试详解

《python利用backoff实现异常自动重试详解》backoff是一个用于实现重试机制的Python库,通过指数退避或其他策略自动重试失败的操作,下面小编就来和大家详细讲讲如何利用backoff实... 目录1. backoff 库简介2. on_exception 装饰器的原理2.1 核心逻辑2.2

Java计算经纬度距离的示例代码

《Java计算经纬度距离的示例代码》在Java中计算两个经纬度之间的距离,可以使用多种方法(代码示例均返回米为单位),文中整理了常用的5种方法,感兴趣的小伙伴可以了解一下... 目录1. Haversine公式(中等精度,推荐通用场景)2. 球面余弦定理(简单但精度较低)3. Vincenty公式(高精度,

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

Java实现视频格式转换的完整指南

《Java实现视频格式转换的完整指南》在Java中实现视频格式的转换,通常需要借助第三方工具或库,因为视频的编解码操作复杂且性能需求较高,以下是实现视频格式转换的常用方法和步骤,需要的朋友可以参考下... 目录核心思路方法一:通过调用 FFmpeg 命令步骤示例代码说明优点方法二:使用 Jaffree(FF

基于C#实现MQTT通信实战

《基于C#实现MQTT通信实战》MQTT消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点,下面我们就来看看C#实现... 目录1、连接主机2、订阅消息3、发布消息MQTT(Message Queueing Telemetr