1019 数字黑洞 (20分)

给定任一个各位数字不完全相同的 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<iostream>
#include<string>
#include<algorithm>
using namespace std;
bool cmp(char ch, char ch1)
{return ch > ch1;
}
int main()
{string str,str1,str2;cin >> str;int sum = 0;str.insert(0, 4 - str.size(), '0');//不足0的话补零do{str1 = str;str2 = str;sort(str1.begin(), str1.end(),cmp);//降序sort(str2.begin(), str2.end());//升序sum = atoi(str1.c_str()) - atoi(str2.c_str());printf("%04s - %04s = %04d\n", str1.c_str(), str2.c_str(), sum);str=to_string(sum);   str.insert(0, 4 - str.size(), '0');//补零} while (str != "6174" && sum != 0);
}

C++学习之路 | PTA乙级—— 1019 数字黑洞 (20分)(精简)相关推荐

  1. C++学习之路 | PTA乙级—— 1048 数字加密 (20 分)(精简)

    1048 数字加密 (20 分) 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 ...

  2. C++学习之路 | PTA乙级—— 1012 数字分类 (20分)(精简)

    1012 数字分类 (20分) 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A ​1 ​​ = 能被 5 整除的数字中所有偶数的和: A ​2 ​​ = 将被 5 除后余 1 ...

  3. C++学习之路 | PTA乙级—— 1084 外观数列 (20 分)(精简)

    1084 外观数列 (20 分) 外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, - 它从不等于 1 的数字 d 开始,序列的第 n ...

  4. C++学习之路 | PTA乙级—— 1082 射击比赛 (20 分)(精简)

    1082 射击比赛 (20 分) 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟.我 ...

  5. C++学习之路 | PTA乙级—— 1068 万绿丛中一点红 (20 分)(精简)

    1068 万绿丛中一点红 (20 分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点 ...

  6. C++学习之路 | PTA乙级—— 1029 旧键盘 (20 分)(精简)

    1029 旧键盘 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 ...

  7. C++学习之路 | PTA乙级—— 1013 数素数 (20分)(精简)

    1013 数素数 (20分) 令 P ​i ​​ 表示第 i 个素数.现任给两个正整数 M≤N≤10 ​4 ​​ ,请输出 P ​M ​​ 到 P ​N ​​ 的所有素数. 输入格式: 输入在一行中给 ...

  8. PAT乙级 1019 数字黑洞 (20 分)

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

  9. C++学习之路 | PTA乙级—— 1063 计算谱半径 (20 分)(精简)

    1063 计算谱半径 (20 分) 在数学中,矩阵的"谱半径"是指其特征值的模集合的上确界.换言之,对于给定的 n 个复数空间的特征值 { a ​1 ​​ +b ​1 ​​ i,⋯ ...

最新文章

  1. oracle pl sql示例,oracle PL SQL学习案例(一)
  2. 全卷积神经网路【U-net项目实战】U-Net网络练习题: Kaggle - 2018 Data Science Bowl
  3. 背水一战 Windows 10 (10) - 资源: StaticResource, ThemeResource
  4. (转)编译Android源码的全过程
  5. jenkins+Docker持续化部署(笔记)
  6. 如果再这么玩下去,中国的科研就没戏了
  7. python中字典的value可以为任意对象_Python学习之字典的删改查操作
  8. 1086: [SCOI2005]王室联邦
  9. Java实现蛇形矩阵
  10. matlab ode45 初值,为什么设定的初值在ode45里无效?
  11. 警惕!这5种“脸色”在暗示你这些健康问题!
  12. 史上超强最常用SQL语句大全
  13. 转载--32个鲜为人知的自学网站
  14. oracle 索引详解 注:转自红黑联盟非原创
  15. 如何在线免费获取RStudio Conference 2020研讨会资料
  16. 笔记本ubuntu,deepin,linux系统共享WIFI
  17. 功能安全-三种确认措施报告之安全评估报告学习记录
  18. 新电脑怎么把计算机放在桌面,新安装的Win10怎么将“我的电脑”放在桌面
  19. 虚拟桌面工具 Virtual Desktop
  20. 龙翔集团牵头起草全国首个月子中心服务等级划分团体标准开始实施

热门文章

  1. 领域应用 | 知识图谱的技术与应用
  2. 【LeetCode】3月27日打卡-Day12
  3. 【LeetCode】3月24日打卡-Day9
  4. javascript的性能优化
  5. python——面向对象相关
  6. 日期选择控件-laydate
  7. 刚刚上班才回来,今天和你说说hash数组
  8. MemoryInjector 无痕注入
  9. 测试用例设计--判定表
  10. 怎么改变表单option标签直接字体大小_不起眼却非常重要的表单交互