PAT (Basic Level) Practice1019 数字黑洞
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 数字黑洞相关推荐
- 乙级(Basic Level) 1009 数字黑洞
题目描述 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到 一个新的数字.一直重复这样做,我们很快会停在有"数 ...
- PAT (Basic Level) Practice1012 数字分类
1012 数字分类 一.题目 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1=A_1=A1= 能被 5 整除的数字中所有偶数的和: A2=A_2=A2= 将被 5 除后余 ...
- 1048 数字加密【PAT (Basic Level) Practice (中文)】
1048 数字加密[PAT (Basic Level) Practice (中文)] 原题链接:1048 数字加密 (pintia.cn) 1.前言 PAT(乙级)2015年冬季考试 第三题 分数: ...
- 【题解】PAT (Basic Level) Practice (中文)
互联网行业的小白,写博客的目的是为了记录自己的学习过程.对自己学习中所犯的错误做一个总结.由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教! PAT Basic Level P ...
- PAT basic level 答案+解题思路+难点 (个人刷题记录)
PAT basic level 使用语言:C++ 仅记录一下自己刷题过程的心得体会 永远保持更新(期待更好的解法) 可能有些题没有(那就是我还没做出来,以后会更的!) 欢迎大家与我讨论交流√ 题目序列 ...
- PAT (Basic Level) Practice (中文)1058 选择题 (20 分)
PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 文章目录 PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 题 ...
- PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642
PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...
- PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)
PAT (Basic Level) Practise (中文)-1025. 反转链表 (25) http://www.patest.cn/contests/pat-b-practise/1025 ...
- PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)
PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20) http://www.patest.cn/contests/pat-b-practise/1034 ...
最新文章
- MySQL 的“root”用户修改密码
- Java-Web Servlet开发
- [self Introduce]MY job pic
- 数据结构两个月学完_这是我作为数据科学家两年来所学到的
- 计算机专业毕业后现状,计算机专业怎么样_毕业生道出现状_“千万”别学
- python内存管理错误的是_Python内存管理机制
- 生产排程系统_APS自动生产排程系统-用户常见问题及解答
- 【染上你的颜色】MMD动作+镜头下载
- Shell中uniq命令的用法
- Python视频制作 MoviePy框架音频处理模块
- matlab median filter,matlab--fftshift,filter2,median用法. (转)
- 到全国各省市关于公务员考试的信息
- 超全面UI基础设计规范
- 洛谷 P1725 琪露诺
- 树莓派教程 - 1.5 树莓派GPIO库wiringPi 使用硬件串口ttyAMA0与ttyS0
- 手机如何当win10电脑摄像头使用
- python辗转相除_使用辗转相除法求两个数的最大公因数(python实现)
- 甜糖心愿 网心云 操作指南
- NewOJ Week 2题解
- codeforces C. Ehab and Path-etic MEXs
热门文章
- FTP服务器的安装与配置
- 写任意正整数的次幂_并发扣款一致性,幂等性问题,这个话题还没聊完
- ad软件中的插座_STM32采集AD的输入阻抗问题(转)
- 增值电信业务许可证 年审年报 教程 icp sp idc年审年报
- cesium 加载Googl式的切片
- okHttp3连接池简单使用
- win10系统日志显示不可用sid_win10系统电脑修改sid安全标识符的操作方法
- pycharm 中文_环境搭建:3.pycharm社区版安装配置
- win10 休眠设置无效_睡眠模式在Windows 10系统上不起作用?
- 移除span的html,从最后一个span元素的伪元素内容中移除::