数字黑洞

B1019 数字黑洞

…衆ロ難τιáo~ 提交于 2020-03-07 02:25:37
给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。 例如,我们从6767开始,将得到 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 7641 - 1467 = 6174 … … 现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。 输入格式: 输入给出一个 (0,10 ​4 ​​ ) 区间内的正整数 N。 输出格式: 如果 N 的 4 位数字全相等,则在一行内输出 N - N = 0000;否则将计算的每一步在一行内输出,直到 6174 作为差出现,输出格式见样例。注意每个数字按 4 位数格式输出。 输入样例 1: 6767 输出样例 1: 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 输入样例 2: 2222 输出样例 2: 2222 - 2222 = 0000 思路: 1.将四位正整数存到数组中,进行排序获取最大最小值,然后利用循环每一次判断是否满足条件

20175234 2018-2019-2 个人项目:数字黑洞

霸气de小男生 提交于 2020-03-05 20:58:11
目录 黑洞简介 需求分析 功能设计 测试运行 设计实现 核心代码及 码云链接 修改路上的坎坎坷坷 总结 PSP 参考资料 黑洞简介 数字黑洞是什么(以下链接可以直达,单个详细博客) 对于数学黑洞,无论怎样设值,在规定的处理法则下,最终都将得到固定的一个值,再也跳不出去了,就像宇宙中的黑洞可以将任何物质,以及运行速度最快的光牢牢吸住,不使它们逃脱一样。 西西弗斯黑洞 西西弗斯黑洞,即123黑洞,对任一整数,不断重复数出这个数中的偶数个数,奇数个数,及这个数中所包含的所有位数的总数,将数整理为“偶数个数,奇数个数,总位数”排列,最后必得出123的结果。 冰雹猜想 冰雹猜想是指,一个自然数x,如果是奇数就乘以3再加1,如果是偶数就析出偶数因数2ⁿ,这样经过若干个次数,最终回到1。 圣经数 任写一个3的倍数(正整数),把各位数字的立方相加,得出和,再把和的各位数字立方后相加,如此反复进行,最后必然出现“圣经数”。 数字黑洞1和4 数学黑洞1和4是指任取一个非0自然数,求出它的各个数位上数字的平方和,得到一个新数。再求出这个新数各个数位上数字的平方和,又得到一个新数。如此进行到最后只有两种情况: 出现1,之后永远都是1;出现4,之后开始按4、16、37、58、89、145、42、20循环。 需求分析 根据用户选择的黑洞类型,验证用户输入的正整数的黑洞情况。 功能设计

1019 数字黑洞 (20分)

青春壹個敷衍的年華 提交于 2020-02-21 17:39:17
给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。 例如,我们从6767开始,将得到 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 7641 - 1467 = 6174 … … 现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。 输入格式: 输入给出一个 (0,104次方​​) 区间内的正整数 N。 输出格式: 如果 N 的 4 位数字全相等,则在一行内输出 N - N = 0000;否则将计算的每一步在一行内输出,直到 6174 作为差出现,输出格式见样例。注意每个数字按 4 位数格式输出。 输入样例 1: 6767 输出样例 1: 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 输入样例 2: 2222 # include <stdio.h> # include <string.h> # include <algorithm> using

PAT B1019 数字黑洞 (20分)

醉酒当歌 提交于 2020-02-03 22:47:10
题目链接 : https://pintia.cn/problem-sets/994805260223102976/problems/994805302786899968 题目描述 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。 例如,我们从6767开始,将得到 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 7641 - 1467 = 6174 . . . . . . 现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。 输入 输入给出一个 (0,10^​4​​ ) 区间内的正整数 N。 输出 如果 N 的 4 位数字全相等,则在一行内输出 N - N = 0000;否则将计算的每一步在一行内输出,直到 6174 作为差出现,输出格式见样例。注意每个数字按 4 位数格式输出。 样例输入 6767 样例输出 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 代码

PAT basic 1019 数字黑洞 (20分) C++ 测试点2 3 4 错误原因

一笑奈何 提交于 2020-01-28 07:26:38
一、题目描述 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把4 个数字(注意测试2,3,4并不是4位数字)按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。 例如,我们从6767开始,将得到 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 7641 - 1467 = 6174 … … 现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。 输入格式: 输入给出一个 (0,10 ​4 ) 区间内的正整数 N。 输出格式: 如果 N 的 4 位数字全相等,则在一行内输出 N - N = 0000;否则将计算的每一步在一行内输出,直到 6174 作为差出现,输出格式见样例。注意每个数字按 4 位数格式输出。 输入样例 1: 6767 输出样例 1: 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 输入样例 2: 2222 输出样例 2: 2222 - 2222 = 0000 二、代码 # define _CRT_SECURE

PAT 乙级 1019 数字黑洞 (20point(s))

孤街浪徒 提交于 2020-01-12 05:11:39
题目 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。 例如,我们从6767开始,将得到 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 7641 - 1467 = 6174 … … 现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。 输入格式: 输入给出一个 (0,10^4) 区间内的正整数 N。 输出格式: 如果 N 的 4 位数字全相等,则在一行内输出 N - N = 0000;否则将计算的每一步在一行内输出,直到 6174 作为差出现,输出格式见样例。注意每个数字按 4 位数格式输出。 输入样例 1: 6767 输出样例 1: 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 输入样例 2: 2222 输出样例 2: 2222 - 2222 = 0000 思路 有几个注意的地方 第一,用 string 保存输入,利用 sort 排序 string,再利用

[算法]黑洞数

雨燕双飞 提交于 2019-12-04 14:30:04
黑洞数 问题描述 黑洞数又称陷阱数,是类具有奇特转换特性的整数.任何一个数字不全相同的整数,经有限"重排求差"操作,总会得到某一个或者一些数,这些数即为黑洞数."重排求差"操作即把组成该数的数字重排后得到的最大数减去重排后得到的最小数. 举个例子,3位数的黑洞数为495. 简易推导过程: 随便找个数,如297,3个位上的数的数从小到大和从大到小各排一次,为972和279,相减,得693.按上面做法再做一次,得到594,再做一次,得到495. 之后反复都是495. 验证4位数的黑洞数6174. 注意: 从5位黑洞数开始就是循环节的形式 算法思路 代码示例 # 结束条件: num_max - num_min = 黑洞数 # 循环结构: 求num_max,num_min,作差 def get_max_min(num): num_list = [] while num > 0: num_list.append(num % 10) num //= 10 num_list.sort() num_min = 0 for x in num_list: num_min = num_min * 10 + x num_max = 0 for x in num_list[::-1]: num_max = num_max * 10 + x return num_max, num_min # num: