1019 数字黑洞

一、题目

给定任一个各位数字不完全相同的 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

四、题目分析

以整型变量读入四位整数,将整数每一位保存在数组中,对数组排序,求得升序整数和降序整数,做差,判断是否是数字黑洞,按照格式输出。

五、代码

#include <bits/stdc++.h>
using namespace std;
bool to_array(int num, int a[])
{a[0] = num / 1000;a[1] = num / 100 % 10;a[2] = num / 10 % 10;a[3] = num % 10;
}int main()
{int num1, num2;int min, max;int a[4];cin >> num1;to_array(num1, a);sort(a, a + 4);min = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];max = a[3] * 1000 + a[2] * 100 + a[1] * 10 + a[0];num2 = max - min;printf("%04d - %04d = %04d", max, min, num2);num1 = num2;while (true){to_array(num1, a);sort(a, a + 4);min = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];max = a[3] * 1000 + a[2] * 100 + a[1] * 10 + a[0];num2 = max - min;if (num2 == num1)break;else{printf("\n%04d - %04d = %04d", max, min, num2);num1 = num2;}}return 0;
}

PAT (Basic Level) Practice1019 数字黑洞相关推荐

  1. 乙级(Basic Level) 1009 数字黑洞

    题目描述 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到 一个新的数字.一直重复这样做,我们很快会停在有"数 ...

  2. PAT (Basic Level) Practice1012 数字分类

    1012 数字分类 一.题目 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1=A_1=A1​= 能被 5 整除的数字中所有偶数的和: A2=A_2=A2​= 将被 5 除后余 ...

  3. 1048 数字加密【PAT (Basic Level) Practice (中文)】

    1048 数字加密[PAT (Basic Level) Practice (中文)] 原题链接:1048 数字加密 (pintia.cn) 1.前言 PAT(乙级)2015年冬季考试 第三题 分数: ...

  4. 【题解】PAT (Basic Level) Practice (中文)

    互联网行业的小白,写博客的目的是为了记录自己的学习过程.对自己学习中所犯的错误做一个总结.由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教! PAT Basic Level P ...

  5. PAT basic level 答案+解题思路+难点 (个人刷题记录)

    PAT basic level 使用语言:C++ 仅记录一下自己刷题过程的心得体会 永远保持更新(期待更好的解法) 可能有些题没有(那就是我还没做出来,以后会更的!) 欢迎大家与我讨论交流√ 题目序列 ...

  6. PAT (Basic Level) Practice (中文)1058 选择题 (20 分)

    PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 文章目录 PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 题 ...

  7. PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...

  8. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  9. PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)

    PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)  http://www.patest.cn/contests/pat-b-practise/1034 ...

最新文章

  1. MySQL 的“root”用户修改密码
  2. Java-Web Servlet开发
  3. [self Introduce]MY job pic
  4. 数据结构两个月学完_这是我作为数据科学家两年来所学到的
  5. 计算机专业毕业后现状,计算机专业怎么样_毕业生道出现状_“千万”别学
  6. python内存管理错误的是_Python内存管理机制
  7. 生产排程系统_APS自动生产排程系统-用户常见问题及解答
  8. 【染上你的颜色】MMD动作+镜头下载
  9. Shell中uniq命令的用法
  10. Python视频制作 MoviePy框架音频处理模块
  11. matlab median filter,matlab--fftshift,filter2,median用法. (转)
  12. 到全国各省市关于公务员考试的信息
  13. 超全面UI基础设计规范
  14. 洛谷 P1725 琪露诺
  15. 树莓派教程 - 1.5 树莓派GPIO库wiringPi 使用硬件串口ttyAMA0与ttyS0
  16. 手机如何当win10电脑摄像头使用
  17. python辗转相除_使用辗转相除法求两个数的最大公因数(python实现)
  18. 甜糖心愿 网心云 操作指南
  19. NewOJ Week 2题解
  20. codeforces C. Ehab and Path-etic MEXs

热门文章

  1. FTP服务器的安装与配置
  2. 写任意正整数的次幂_并发扣款一致性,幂等性问题,这个话题还没聊完
  3. ad软件中的插座_STM32采集AD的输入阻抗问题(转)
  4. 增值电信业务许可证 年审年报 教程 icp sp idc年审年报
  5. cesium 加载Googl式的切片
  6. okHttp3连接池简单使用
  7. win10系统日志显示不可用sid_win10系统电脑修改sid安全标识符的操作方法
  8. pycharm 中文_环境搭建:3.pycharm社区版安装配置
  9. win10 休眠设置无效_睡眠模式在Windows 10系统上不起作用?
  10. 移除span的html,从最后一个span元素的伪元素内容中移除::