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

输出样例 2:

2222 - 2222 = 0000

部分正确代码

#include<bits/stdc++.h>
using namespace std;bool f1(int n) {int t = n % 10;n /= 10;while (n) {if (t != n % 10)return false;n /= 10;}return true;
}int main() {int n;cin >> n;if (f1(n)) {printf("%04d - %04d = %04d\n", n, n, n - n);return 0;}string s = to_string(n);sort(s.begin(), s.end());n = stoi(s);reverse(s.begin(),s.end());int t= stoi(s);while (t - n != 6174) {printf("%04d - %04d = %04d\n", t, n, t - n);s = to_string(t - n);sort(s.begin(), s.end());n = stoi(s);reverse(s.begin(), s.end());t = stoi(s);}//cout << t << " - " << n << " = " << t - n << endl;printf("%04d - %04d = %04d\n", t, n, t - n);return 0;
}
//没考虑清楚时间复杂度

考虑了学姐的代码以后修改

分析:有一个测试用例注意点,如果当输入N值为6174的时候,依旧要进行下面的步骤,直到差值为6174才可以~所以用do while语句,无论是什么值总是要执行一遍while语句,直到遇到差值是0000或6174~

s.insert(0, 4 – s.length(), ‘0’);用来给不足4位的时候前面补0~

#include<bits/stdc++.h>
using namespace std;
bool cmp(char a, char b) { return a > b; }
int main() {string s;cin >> s;s.insert(0, 4 - s.length(), '0');do {string a = s, b = s;sort(a.begin(), a.end(), cmp);sort(b.begin(), b.end());int result = stoi(a) - stoi(b);s = to_string(result);s.insert(0, 4 - s.length(), '0');cout << a << " - " << b << " = " << s << endl;} while (s != "6174" && s != "0000");return 0;
}

Ps.感觉自己写代码的时候还是有很多不足

PTA | 1019 数字黑洞 (20分)相关推荐

  1. C++学习之路 | PTA乙级—— 1019 数字黑洞 (20分)(精简)

    1019 数字黑洞 (20分) 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字.一直重复这 ...

  2. 1019 数字黑洞 (20 分)(c语言)

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

  3. 15行代码AC——1019 数字黑洞 (20分) 甲级1069. The Black Hole of Numbers (20)(解题报告)

    立志用更少的代码做更高效的表达 PAT甲级最优题解-->传送门 Pat乙级最优化代码+题解+分析汇总-->传送门 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非 ...

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

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

  5. 1019 数字黑洞 (20 分)

    原题链接 题面 思路 就是以字符串的形式读入,通过sort排序来实现升序排和降序排,通过string+ insert 的方式补全占位的 0. 坑点 就是一个数字不足四位时,必须要先在前面用 0 占位, ...

  6. 【PAT乙级】1019 数字黑洞 (20 分)

    https://pintia.cn/problem-sets/994805260223102976/problems/994805302786899968 注意补前导零. 例: 输入 9 应为0009 ...

  7. 1019 数字黑洞 (20分)

    输入样例 1: 6767 输出样例 1: 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 输入样 ...

  8. 1019 数字黑洞 (20)

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

  9. 1019. 数字黑洞 (20)

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

最新文章

  1. Google Test(GTest)使用方法和源码解析——自定义输出技术的分析和应用
  2. OMG!我居然把新首页设计出来了!
  3. linux docker 跑代码_使用Docker 搭建自动化测试环境
  4. Android IOS WebRTC 音视频开发总结(四二)-- webrtc开发者大会
  5. CUDA入门需要知道的东西
  6. Mybatis 中使用CDATA
  7. 开放计算架构:蚂蚁金服是如何用一套架构容纳所有计算的?
  8. linux下nand flash驱动工作原理,Linux驱动之Nand Flash四问,原理、工作方式都包含了...
  9. 关于物联网规则引擎技术,你想要知道的都在这儿!
  10. mui框架下监听返回按钮
  11. vmware中nat模式中使用静态ip后无法上网的问题
  12. 实战爬虫:python爬虫学习笔记之爬取搜狗|微信文章——动态网页爬取
  13. JIT 编译器 是什么
  14. C语言程序段的定义、实际应用分析
  15. python 串口接收多线程与界面通信_Python之PyQT多线程串口代码分析
  16. 全自动IC半导体MCU芯片烧录flash大批量生产出货的解决方案分析
  17. 任务栏文件资源管理器打开特别卡
  18. java文字生成水印图片
  19. 每个python文件就是一个模块、模块的名字就是_每个Python文件都可以作为一个模块,模块的名字就是 的名字_学小易找答案...
  20. 雷库兹韦尔量子计算机,人物 | 他说,再挺11年,送你长生不老,要不要?

热门文章

  1. JoJoGAN One-Shot Face Stylization:使用 StyleGAN 创建 JoJo风格人脸头像
  2. 我市智慧城市建设迈入快车道
  3. Excel VS Python 第三期——重复值处理
  4. 微信公众号注册显示法人信息不一致怎么办?
  5. 苹果手机桌面计算机没6,iPhone的实用攻略如此多,这6个你又知道吗
  6. 如何将讲课视频录制下来,只需要三步搞定.
  7. 三星更新出现android,部分三星 A70手机更新最新安卓10底层版本出现变砖
  8. 增加字库 安卓_Android为TextView添加字体库和设置描边的方法
  9. 服务器信息为什么会被窃取,还在用Websockets的JavaScript开发人员们,你们可能会被窃听!...
  10. 京东2016版首页改版前端总结