黑洞数

article/2025/9/9 14:58:46

黑洞数是指于四位数中,只要数字不完全相同,将数字由大到小的排列减去由小到大的排列。假设一开始选定的数字为x_1x_2=f(x_1),x_3=f(x_2),...,x_n=f(x_{n-1}) 用同样的规则继续算下去,最后的结果一定是6174。 比如说一开始选定9891,则f(9891)=9981-1899=8082,f(8820)=8820-0288=8532,f(8532)=8532-2358=6174,f(7641)=7641-1467=6174~

其他的四位数经过这样一系列的运算后,在七步之内都会对应到6174。这种现象类似黑洞(进去后就出不来了),故称为黑洞数。

 

除此以外,三位数也有一个类似的黑洞数495

 

5位数的状况:没有黑洞,有3个循环

71973\to83952\to74943\to62964\to71973

82962\to75933\to63954\to61974\to82962

53955\to59994\to53955

6位数的状况:有2个黑洞631764、549945,还有1个7个成员的循环

420876\to851742\to750843\to840852\to860832\to862632\to642654\to420876

7位数的状况:没有黑洞,只有1个8成员的循环

7509843\to9529641\to8719722\to8649432\to7519743\to8429652\to7619733\to8439522\to7509843

8位数的状况:有2个黑洞63317664、97508421

9位数的状况:有2个黑洞554999445、864197532

10位数的状况:有3个黑洞6333176664、9753086421、9975084201

以上转自维基百科:https://zh.wikipedia.org/wiki/%E9%BB%91%E6%B4%9E%E6%95%B8

 

5位黑洞数题目:
五位黑洞数 
任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。
求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。
如此往复,数字会落入某个循环圈(称为数字黑洞)。
比如,刚才的数字会落入:82962 75933 63954 61974 这个循环圈。


请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为 0,这个可以不考虑。


循环圈的输出格式仿照:
82962 75933 63954 61974

其中数字的先后顺序可以不考虑。

package work;import java.util.Arrays;
import java.util.Scanner;import javax.naming.ldap.SortControl;public class A60 {static int [] vis=new int[100000];public  static int cha(int n)//求一个数的最大数与最小数的差{int[] a=new int[100];int i=0;int ans1=0;int ans2=0;int sub=0;while(n!=0){int r=n%10;a[i]=r;i++;n/=10;}Arrays.sort(a, 0,i);for(int j=0;j<i;j++){ans1=a[0]+a[1]*10+a[2]*100+a[3]*1000+a[4]*10000;ans2=a[0]*10000+a[1]*1000+a[2]*100+a[3]*10+a[4];} sub=ans1-ans2;//System.out.println(sub);return sub;}public static void circle(int n){int x=n;int k=0;int[] b=new int[1000];while(true){int flag=1;x=cha(x);//两个数的差b[k]=x;k++;for(int i=0;i<k-1;i++){if(b[i]==b[k-1]){//if(vis[b[i]]==0)flag=0;int flag1=0;for(int j=i;j<k-1;j++){if(vis[b[j]]==0){if(j==i)System.out.print("[");if(j==k-2)System.out.print(b[j]);elseSystem.out.print(b[j]+",");vis[b[j]]=1;flag1=1;}elsebreak;}if(flag1==1){System.out.print("]");System.out.println();}break;}}if(flag==0){break;}}}public static void main(String [] args){int n;Scanner cin=new Scanner(System.in);for(int i=10000;i<=99999;i++){circle(i);}}}

 


http://chatgpt.dhexx.cn/article/96Qjsskb.shtml

相关文章

python求黑洞数_求解黑洞数

问题描写&#xff1a; 黑洞数又称圈套数&#xff0c;是类具有奇特转换特性的整数。任何1个数字不全相同的整数&#xff0c; 经有限“重排求差”操作&#xff0c;总会得到某1个或1些数&#xff0c;这些数即为黑洞数。 “重排求差”操作即把组成该数的数字重排后得到的最大数减去…

负载均衡之加权轮询算法

在介绍加权轮询算法(WeightedRound-Robin)之前&#xff0c;首先介绍一下轮询算法(Round-Robin)。 一&#xff1a;轮询算法(Round-Robin) 轮询算法是最简单的一种负载均衡算法。它的原理是把来自用户的请求轮流分配给内部的服务器&#xff1a;从服务器1开始&#xff0c;直到服务…

基于HTTP的长轮询实现

Web客户端与服务器之间基于Ajax&#xff08;http&#xff09;的常用通信方式&#xff0c;分为短连接与长轮询。 短连接&#xff1a;客户端和服务器每进行一次HTTP操作&#xff0c;就建立一次连接&#xff0c;任务结束就中断连接。 在长轮询机制中&#xff0c;客户端像传统轮询一…

Linux轮询操作

Linux设备之非阻塞I/O操作 文章目录 Linux设备之非阻塞I/O操作前言一、接口简介1、select2、poll3、epoll4、总结 二、接口介绍三、代码样例 前言 上一篇讲解了Linux设备的阻塞I/O操作&#xff0c;其原理是利用了把进程挂到等待队列中&#xff0c;等条件满足时再唤醒此进程。本…

短轮询和长轮询

轮询是由客户端每隔一段时间向服务器发出HTTP请求&#xff0c;服务端接收到请求后向客户端返回最新的数据。 客户端的轮询方式一般分为短轮询和长轮询。 短轮询&#xff1a; 一般是由客户端每隔一段时间向服务器发起一次普通HTTP请求。服务端查询当前接口是否有数据更新&#x…

轮询与长轮询

轮询&#xff1a;说白了就是客户端定时去请求服务端&#xff0c; 是客户端主动请求来促使数据更新&#xff1b; 长轮询&#xff1a;说白了 也是客户端请求服务端&#xff0c;但是服务端并不是即时返回&#xff0c;而是当有内容更新的时候才返回内容给客户端&#xff0c;从流程…

前端实现轮询

方法一&#xff1a;简单实现 componentDidMount() {this.props.countFxMissionByStatus();countSwiftMessage(); }componentWillReceiveProps(nextProps) {const {location} nextProps;// 判断页面然后在更新的周期中实现轮询const isSwiftManage location.pathname.indexOf…

NGINX轮询机制的几种形式

前言&#xff1a;总以为轮询就简单的next而已&#xff0c;实际还有几种不同的实现机制。某个客户的源站有几个不同的IP&#xff0c;回源的时候自然是采用的轮询的机制。客户业务上线前&#xff0c;检查源站的联通性发现一个漏网之鱼竟然差点滥竽充数。然而客户的想法确是&#…

事件轮询机制理解

进程与线程 首先简单了解下进程和线程的概念 进程&#xff1a;cpu资源分配的最小的单位&#xff0c;是拥有资源和独立运行的最小单位&#xff0c;程序执行时&#xff0c;会创建一个进程&#xff0c;cpu为其分配资源&#xff0c;并加入进程就绪队列。线程&#xff1a;cpu调度的…

事件轮询机制

事件循环(轮询)机制 js是单线程的所有js代码都是在主线程执行的同步任务进入主线程即会执行异步任务则会进入浏览器的管理模块 (有DOM事件管理模块、ajax请求管理模块、定时器管理模块等)管理模块一直监视异步任务是否满足条件。如果满足条件则会将对应的回调放入回调队列中(c…

IP多播(组播)

一 IP多播的基本概念 IP多播(multicast&#xff0c;也被译为组播)&#xff0c;它是一种一对多的通信方式。与单播相比&#xff0c;多播可以大大节约网络资源。 以视频流媒体服务为例说明单播和多播的区别&#xff0c;如图所示&#xff1a; 图1 单播与多播的比较 (a) 中使用的…

多播

19.1 概述 单播地址标识单个接口&#xff0c;广播地址标识子网上的所有接口&#xff0c;多播地址标识一组接口。单播和广播是编制方案的两个极端(要么一个要么全部)&#xff0c;多播的目的就在于提供一种折衷方案。多播数据报仅由对该数据报感兴趣的接口接收&#xff0c;也就是…

单播 、多播(组播)、广播

作者&#xff1a;yhthu 链接&#xff1a;https://www.jianshu.com/p/cc62e070a6d2#comments 来源&#xff1a;简书 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 目录 单播、多播(组播)、广播、任播单播组播广播任播 单播、多播(组播)、广…

UDP之多播/组播

目录 一.什么是多播(组播)&#xff1f;为什么出现多播(组播)&#xff1f;二.组播地址三.主机网卡对应的编号 ifconfig命令ip ad (ip adress)获取网卡对应的编号四.多播实现 一.什么是多播(组播)&#xff1f;为什么出现多播(组播)&#xff1f; 由上节课讲到的广播&#xff0c;可…

单播、多播和广播经典详解

1 什么是单播、多播和广播 “单播”&#xff08;Unicast&#xff09;、“多播”&#xff08;Multicast&#xff09;和“广播”&#xff08;Broadcast&#xff09;这三个术语都是用来描述网络节点之间通讯方式的术语。那么这些术语究竟是什么意思&#xff1f;区别何在…

多播--概念和编程

11.3 多播 单播用于两个主机之间的端对端通信&#xff0c;广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端&#xff0c;要么对一个主机进行通信&#xff0c;要么对整个局域网上的主机进行通信。实际情况下&#xff0c;经常需要对一组特定的主机进…

单播、多播(主播)、广播简介

单播 简介 单播&#xff08;unicast&#xff09;是指封包在计算机网络的传输中&#xff0c;目的地址为单一目标的一种传输方式。每次只有两个实体相互通信&#xff0c;发送端和接收端都是唯一确定的。它是现今网络应用最为广泛&#xff0c;通常所使用的网络协议或服务大多采用…

IP多播

部分转载自&#xff1a;http://www.firewall.cx/networking-topics/general-networking/107-network-multicast.html 剩下的基本参考谢希仁计算机网络7th 1. 基本概念 IP多播直观上可以按照下图理解&#xff0c;源主机只需要发送一份数据&#xff0c;而网络中的路由器在转发…

多播(组播)、单播、任播和广播

定义 单播(unicast): 是指封包在计算机网络的传输中&#xff0c;目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛&#xff0c;通常所使用的网络协议或服务大多采用单播传输&#xff0c;例如一切基于TCP的协议。组播(multicast): 也叫多播&#xff0c; 多点广播或…

IP多播(计算机网络-网络层)

目录 一对多通信的应用需求 单播 vs 多播 多播路由器&#xff08;Multicast Router&#xff09; IP 多播的一些特点 D 类 IP 地址与以太网多播地址的映射关系 IP多播需要两种协议 互联网组管理协议 IGMP 多播路由选择协议 两种多播路由选择方法 建议的IP多播路由选择协…