python数字黑洞123_演示数字黑洞现象
一,问题描述
所谓“数字黑洞”现象,就是任意给定一个4位正整数,将组成该正整数的4个数字先按非递减顺序排序,得到一个数称为Large;再将这4个数字按非递增顺序排序,得到另一个数,称为Small。然后,将Large减去Small,得到一个新的数字。当然,其它位数的也存在着这个现象,具体可参考:数字黑洞
将这个新的数字重复上面的处理,很快就会停在有“数字黑洞”之称的 6174 这个数上。这个数也称为Kaprekar常数。
二,举例说明
比如,输入6767,其演示结果如下:
7766 - 6677 = 1089
9810 - 0189 = 9621 ----将新得到的数 1089 进行非递减及 非递增排序后,分别得到 9810 和 0189(189)
9621 - 1269 = 8352
8532 - 2358 = 6174
三,核心思路分析
这个问题的核心过程是:将数字分解成各个位,然后按非递增或非递减排序,再得到排序后的数字。
数字分解的话,可以用求余 和 除法。排序的话,可以用Arrays.sort(int[] arr)。得到排序后的数字,其实就是Horner法则。
①数字分解:
privatestatic int[] split(intn){
//assert n >= 1000; assert n <= 9999int[] arr = new int[4];int index = 0;while(n != 0)
{
arr[index++] = n % 10;
n= n / 10;
}returnarr;
}
②Horner法则得到数字:关于Horner法则可参考:求幂运算、多项式乘法及Horner法则的应用
//1089-->9810, arr是从小到大的有序数组
privatestatic int toLarge(int[] arr){int result = 0;for(int i = arr.length - 1; i >=0; i--)
{
result= result*10 +arr[i];
}returnresult;
}//1089 --> 189arr是从小到大的有序数组
privatestatic int toSmall(int[] arr){int result = 0;for(int i = 0; i < arr.length; i++)
{
result= result*10 +arr[i];
}returnresult;
}
四,整个代码完整实现:
importjava.util.Arrays;importjava.util.Scanner;public classMain {public static voidmain(String[] args) {
Scanner in= newScanner(System.in);while (in.hasNextInt()) {//注意while处理多个case
int number =in.nextInt();int[] arr =split(number);if(check(arr))
{
System.out.println(number+ " - " + number + " = " + "0000");
}else{int res =process(number);while(res != 6174)
{
res=process(res);
}
}
}
}public static int[] split(intn){int[] arr = new int[4];int index = 0;while(n != 0)
{
arr[index++] = n % 10;
n= n / 10;
}returnarr;
}public static void sort(int[] arr){
Arrays.sort(arr);
}public static int toLarge(int[] arr){int result = 0;for(int i = arr.length - 1; i >=0; i--)
{
result= result*10 +arr[i];
}returnresult;
}public static int toSmall(int[] arr){int result = 0;for(int i = 0; i < arr.length; i++)
{
result= result*10 +arr[i];
}returnresult;
}public static int process(intn){int[] arr =split(n);
Arrays.sort(arr);int large =toLarge(arr);int small =toSmall(arr);
print(large, small, arr);return large -small;
}public static void print(int large, int small, int[] arr){
System.out.println(large+ " - " + arr[0] + arr[1] + arr[2] + arr[3] + " = " + (large -small));
}public static boolean check(int[] arr){int tmp = arr[0];for(int i = 1; i < arr.length; i++)if(arr[i] !=tmp)return false;return true;
}
}
View Code
python数字黑洞123_演示数字黑洞现象相关推荐
- 数字黑洞java_Java中数字黑洞实现代码
给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞&qu ...
- 宇宙有黑洞,信息数字黑洞
工业互联网.5G+智能化.云平台等如雨后春笋般接踵而至,大数据时代数字黑洞是指那些无法有效处理和利用的大量数据,它们像黑洞一样,吞噬着有价值的信息,同时对数据分析和决策带来了巨大的困难. 假设某家电商 ...
- 西绪福斯黑洞(123数字黑洞)——java实现
西绪福斯黑洞(123数字黑洞) 数学中的123就跟英语中的ABC一样平凡和简单.然而,按以下运算顺序,就可以观察到这个最简单的数字 黑洞的值: 设定一个任意数字串,数出这个数中的偶数个数,奇数个数,及 ...
- 【Python学习笔记】1:黑洞数和啤酒问题
这学期刚开始接触python,觉得python的确很强大,特别是在序列的处理上.虽然以后未必会用得上太多,还是要好好学一下.基于已经有了编程语言基础,python的学习还是以边做题边学习语法较好,毕竟 ...
- 如何检查一个Python字符串是否只包含数字?
如何检查一个Python字符串是否只包含数字? python String类中有一个名为isdigit()的方法,如果字符串中所有字符都是数字且至少有一个字符,则返回true,否则返回false. p ...
- Python基础(10)--数字
本文的主题是 Python 中的数字.会详细介绍每一种数字类型,它们适用的各种运算符, 以及用于处理数字的内建函数.在文章的末尾, 简单介绍了几个标准库中用于处理数字的模块. 本文地址:http:// ...
- python单目运算_Python -- 数字
Python 支持多种数字类型:整型.长整型.布尔型.双精度浮点型.十进制浮点型和复数. Python的几种主要数字类型 Python 有几种整数类型.布尔类型是只有两个值的整型.常规整型是绝大多数现 ...
- python 从字符串中提取数字 re.findall()
以前老用(.*?)提取数字,今天发现不对了,比如一行数字为: 0 0.248438 0.255556 0.128125 0.194444 用: re.findall('(.*?) (.*?) (.*? ...
- python 如何将字符串数字列表转换成数字列表,如何将数字列表转换成字符串数字列表?map(eval,list(str))
字符串数字列表转换成数字列表 # -*- encoding: utf-8 -*- """ @File : test.py @Time : 2019/10/28 23:37 ...
- python传参怎么校验数字_python 多个参数不为空校验方法
python 多个参数不为空校验方法 在实际开发中经常需要对前端传递的多个参数进行不为空校验,可以使用python提供的all()函数 if not all([arg1, arg2, arg3]): ...
最新文章
- mysql 最小时间 最大时间_leetcode539_go_最小时间差
- 让IE6、IE7、IE8支持CSS3的圆角、阴影样式
- 奥斯陆大学计算机,奥斯陆大学雅思要求
- 蓝桥杯2017初赛-正则问题
- linux mint python3.6,Linux 上如何安装并切换最新版本的 Python 3.6
- 一级域名301重定向到www二级域名
- vs2019安装rdlc_科学网—vs2019 完全安装到D盘 - 刘航宇的博文
- 微信大改版,更新前必看的4个东西
- 严蔚敏数据结构习题第五章
- 腾讯防水墙的使用(python_web)
- Maven到底是个啥?——Maven深入理解
- 中国电信上海电信光猫路由器设置和外接路由器
- highChart导出PDF
- 为什么光合作用要叶绿素?
- 【机器学习经典算法】K近邻(KNN):核心与总结
- 打印机不打印计算机原因,打印机打印不完整?是这10个原因造成的!打印必备...
- qq音乐会员联合会员都有哪些
- 用计算机的声音编辑工具录制一段语音信号,传媒2020年7月《影视录音基础》课程考试在线作业考核试题题目【标准答案】...
- 关于 Spfile文件误删除 或者 优化错误 恢复
- Acrel-BUS智能照明控制系统的设计与应用
热门文章
- 【科研分享】推荐系统SCI顶会及顶级期刊 更新于2022-07-13
- python编程输入圆柱_C语言编程:已知圆半径及圆柱高,求圆周长,圆柱体积.要求对输入输出做提示.各位大神帮帮忙,可怜可怜我吧!编写一个c语言程序,要求输入圆...
- 电脑CPU的最佳工作温度是多少度
- 模拟电子技术 项目课 多种波形发生器(方波、三角波、正弦波)
- Ruff Chain 将亮相新加坡WDAS 2018世界数字资产峰会
- Flash 第二篇 AS影片剪辑
- 给UILabel中的文字加删除线
- 《光剑文集》自渡:125首
- Bazel入门:编译C++项目
- nfs总结之生产实例