给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。

例如,我们从6767开始,将得到

7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
… …
现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。

#include<stdio.h>
#include<algorithm>
using namespace std;
int to_number(int a[]){int num=0;for(int i=0;i<4;i++){num*=10;num+=a[i];}return num;
}
void to_arr(int n,int a[]){for(int i=0;i<4;i++){a[i]=n%10;n/=10;}
}
int main(){int n;scanf("%d",&n);int arr[4];int num1,num2;int ans;to_arr(n,arr);while(ans!=6174&&ans!=0){sort(arr,arr+4);num1=to_number(arr);reverse(arr,arr+4);num2=to_number(arr);ans=num2-num1;printf("%04d - %04d = %04d\n",num2,num1,ans);to_arr(ans,arr);}return 0;
}

B1019 数字黑洞相关推荐

  1. 3.B1019数字黑洞

    3.B1019数字黑洞 问题描述: 给定任一个各位数字不完全相同的四位正整数,如果先把四个数字按非递增排序,再按非递减排序,然后用第一个数字减第二个数字,将得到一个新的数字.一直重复这样做,很快会停在 ...

  2. B1019(数字黑洞)

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

  3. PAT乙级-B1019数字黑洞

    思路: 1.利用string录入数据,sort()即可完成从小到大排序:reverse()即可从大到小. 2.stoi()转化为整型. ps:要注意给定的数是(0,10000)即可能只给1~4位的数, ...

  4. 1019 数字黑洞 (20 分)java

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

  5. string去掉后四位_数字黑洞(下):四位数的黑洞

    在上一期中我们展示了三位黑洞数的求解过程,其中的关键技术是数字的排序及位置交换.本期文章继续讨论有关数字黑洞的问题,展示四位黑洞数的求解过程. 一.用户界面 在App Inventor开发环境中打开上 ...

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

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

  7. 1019. 数字黑洞 (20)

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

  8. 牛客网_PAT乙级_1019. 数字黑洞 (20)

    总结 注意!! 想要在函数中结束程序,一定不要用system("pause");,因为这样只是让程序暂停,结果就是运行时间超时,无法通过所有的测试用例. 那么,C++ 程序中什么函 ...

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

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

最新文章

  1. redis安装+redis主从
  2. matlab如何判断线性相关,Fisher线性判断之matlab实现
  3. 【 Notes 】MOBILE LOCALIZATON METHOD BASED ON MULTIDIMENSIONAL SIMILARITY ANALYSIS
  4. java 打包的两种方式
  5. Android开发日常笔记
  6. springboot(1)使用SpringBoot基础HTTP接口GET|POST|DELETE|PUT请求
  7. extjs获取当前时间
  8. Kafka 1.0版本发布
  9. Centos7下安装redis
  10. 【计算机系统设计】学习笔记(1)03,04
  11. JavaScript新手入门教程大全~~~
  12. java trie_java字典树(Trie)实现中文模糊匹配
  13. 初识JS-基础中的基础
  14. 实验4-1-1 最大公约数和最小公倍数 (15 分)
  15. 闭包与setTimeout
  16. 腾达路由器linux开发,Tenda无线路由器远程命令执行后门漏洞
  17. Java基础1(数组)
  18. MySQL【部署 04】8.0.25离线部署(下载+安装+配置)Failed dependencies 问题处理及8.0配置参数说明
  19. 艾永亮:恒大七五折营销事件背后的逻辑与应用
  20. 用Python获取照片GPS信息

热门文章

  1. (转)那些解释起来很蛋疼的IT工种——这里有多少人躺着中枪
  2. c语言快速复数的比较大小,c语言中的复数操作
  3. 西门子S7-SCL高级语言入门视频教程
  4. C++:日期操作、复数加减法、求二元一次方程的根
  5. 湖盟知识—***、病毒、防火墙
  6. kalilinux链接蓝牙音响_Kali-Linux安驱动、使用Blueman连接蓝牙耳机
  7. 【笔记】css实现文字横向排列/竖向排列
  8. ImageLoader和GridView小总结
  9. 各类网红级产品荟聚,硅步机器人专业ROS交流会,近距离产品体验,快来报名吧
  10. 企业邮箱对比免费邮箱,国内邮箱申请哪家好?邮箱哪个安全可靠?