首页 > 其他分享 >黑洞数

黑洞数

时间:2023-04-13 21:22:32浏览次数:29  
标签:min int max 求差 黑洞 swap 重排

黑洞数也称为陷阱数,又称“Kaprekar问题”,是一类具有奇特转换特性的数。

任何一个各位数字不全相同的三位数,经有限次“重排求差”操作,总会得到495。最后所得的495即为三位黑洞数。所谓“重排求差”操作即组成该数的数字重排后的最大数减去重排后的最小数。(6174为四位黑洞数。)

例如,对三位数207:

第1次重排求差得:720 - 27 = 693;
第2次重排求差得:963 - 369 = 594;
第3次重排求差得:954 - 459 = 495;
以后会停留在495这一黑洞数。如果三位数的3个数字全相同,一次转换后即为0。

任意输入一个三位数,编程给出重排求差的过程。

#include<stdio.h>

void swap(int* a, int* b) {
	int temp = *b;
	*b = *a;
	*a = temp;
}

void sw_max(int* a, int* b, int* c) {
	if (*a < *b) swap(a, b);
	if (*b < *c) swap(b, c);
	if (*a < *b) swap(a, b);
}

void sw_min(int* a, int* b, int* c) {
	if (*a > *b) swap(a, b);
	if (*b > *c) swap(b, c);
	if (*a > *b) swap(a, b);
}

//合
int h(int* a, int* b, int* c) {
	return (*a * 100) + (*b * 10) + (*c * 1);
}

//拆
void sp(int* a, int* b, int* c, int* n) {
	*a = *n / 1 % 10; //个
	*b = *n / 10 % 10; //十
	*c = *n / 100 % 10; //百
}

int main() {
	int n, a, b, c;
	scanf("%d", &n);

	//排序方法(可以先拆分个十百,然后排序就可以),后面就遍历即可。

	sp(&a, &b, &c, &n);

	
	for (int count = 1; ; count++)
	{
		sw_max(&a, &b, &c);
		int max = h(&a, &b, &c);

		sw_min(&a, &b, &c);
		int min = h(&a, &b, &c);

		printf("%d: %d - %d = %d\n", count, max, min, max - min);

		n = max - min; // 把新的差丢回来
		sp(&a, &b, &c, &n);

		if ((max - min) == 495) break;
	}
	return 0;
}


标签:min,int,max,求差,黑洞,swap,重排
From: https://www.cnblogs.com/xxing/p/17316439.html

相关文章

  • 数学黑洞(三)角谷猜想
    角谷猜想也叫考拉兹猜想或者3n+1猜想。在1960年代,日本人角谷静夫研究过这个猜想。在1930年代,德国汉堡大学的学生考拉兹,也曾经研究过这个猜想。但这猜想到目前,仍没有任何进展......
  • PAT Basic 1019. 数字黑洞
    PATBasic1019.数字黑洞1.题目描述:给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得......
  • pat乙级 1019 数字黑洞
    #include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>voiddecline(inta[]){inttemp=0;for(inti=0;i<3;i++){......
  • 什么是路由黑洞
    在一个AS内,BGP的邻居可以跨越路由器来建立,这样有可能造成路由黑洞,如图,R1与R2、R4与R5分别建立eBGP邻居,在AS200中,R2与R4建立iBGP邻居,R3没有配置BGP。假设R1通告一条路由199......
  • 银河系中心黑洞的首张照片
    说到黑洞,那就不得不提起我们的家园银河系中心的大黑洞,在今天这张照片出来之前,所有关于银河系黑洞的描述都是推测、理论,而今天成为了现实!2019年,同一团队拍摄了梅西耶87星系(M8......
  • UE 实现黑洞效果
    UE黑洞效果制作注意:所吸取的物体必须开启模拟物理和生成重叠事件两个选项创建一个Actor的C++类,名称为BlackHole。为类头文件添加两个SphereComponent和一个StaticM......
  • 数字黑洞
       一、4位数的数字黑洞    任意给定一个4位数(不能所有位都相同),比如:3278,重新组合出最大数:8732,再重新组合出最小数:2378,相减,得到新的4位数(如不足则补0),重复这......
  • 数字黑洞游戏(6147问题)
    数字黑洞游戏(6147问题)Description假设你有一个各位数字不完全相同的四位数,把所有的数字从大到小排序后得到a,从小到大排序后得到b,然后a-b替换原来这个数,并且继续操作。例......
  • 1019 数字黑洞(JAVA)
    给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快......
  • 彭罗斯过程如何表现(黑洞动力学)
    彭罗斯过程如何表现(黑洞动力学)Photoby马雷克·皮尼基on不飞溅BTZ黑洞碰撞彭罗斯过程(arXiv)作者:XianglongWu,XiangdongZhang抽象的:研究了极端Ban......