PAT 1019 数字黑洞
来源:互联网 发布:nasa直播软件 编辑:程序博客网 时间:2024/04/30 08:57
给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。
例如,我们从6767开始,将得到
7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
... ...
现给定任意4位正整数,请编写程序演示到达黑洞的过程。
输入格式:
输入给出一个(0, 10000)区间内的正整数N。
输出格式:
如果N的4位数字全相等,则在一行内输出“N - N = 0000”;否则将计算的每一步在一行内输出,直到6174作为差出现,输出格式见样例。注意每个数字按4位数格式输出。
输入样例1:6767输出样例1:
7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 = 83528532 - 2358 = 6174输入样例2:
2222输出样例2:
2222 - 2222 = 0000代码示例:
#include <iostream>#include <vector>#include <map>#include <algorithm>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define MAX_NUM_BITS 4 //数的位数/* 把一个4位整数的每一位分离,放入到arr数组中去 */void sepEveryBit(const int num, int arr[]){ arr[0] = num/1000; //千位 arr[1] = num%1000/100; //百位 arr[2] = num%100/10; //十位 arr[3] = num%10; //个位}/* 将数组arr中存放的整数的位数,组合成数 */void combinBitsToNum(const int arr[], int &num){ num = arr[0]*1000+arr[1]*100+arr[2]*10+arr[3];}/* 降序排列函数 */bool cmp(int a, int b){ return a > b;}int main( void ){ int num = 0; int a[MAX_NUM_BITS] = {0}; //存放num的每一位 int num1 = 0, num2 = 0, num3 = 0; //num1 - num2 = num3 cin >> num; /* 判断每一位数是否相等 */ sepEveryBit(num,a); //这个地方也可以这样判断 num %1111 == 0 if(a[0] == a[1] && a[0] == a[2] && a[0] == a[3]) { cout << num << " - " << num << " = 0000" << endl; } else { /* 演示黑洞 */ num3 = num; sepEveryBit(num3,a); do { /* 降序排列,大数 */ sort(a,a+4,cmp); cout << a[0] << a[1] << a[2] << a[3]; combinBitsToNum(a,num1); /* 升序排列小数 */ sort(a,a+4); cout << " - " << a[0] << a[1] << a[2] << a[3]; combinBitsToNum(a,num2); num3 = num1 - num2; /* 把差值继续分解 */ sepEveryBit(num3,a); cout << " = " << a[0] << a[1] << a[2] << a[3] << endl; }while(num3 != 6174); } return 0;}
0 0
- PAT 1019 数字黑洞
- PAT 1019数字黑洞
- PAT 1019 数字黑洞
- PAT 1019数字黑洞
- PAT basic 1019 : 数字黑洞
- ZJU PAT 1019 数字黑洞
- PAT BASIC 1019 数字黑洞
- PAT乙级1019 数字黑洞
- pat—1019数字黑洞
- PAT 乙级 1019 数字黑洞 (20)
- 【PAT乙级题目1019】数字黑洞
- PAT——1019数字黑洞
- PAT 1019. 数字黑洞
- PAT 1019. 数字黑洞
- PAT-数字黑洞
- PAT 数字黑洞
- PAT练习-数字黑洞
- PAT B1019. 数字黑洞
- SoundPool
- GoldGate 配置学习笔记
- 查看gcc预定义的宏
- Android 高级编程 RecyclerView 控件的使用
- 深入理解C First
- PAT 1019 数字黑洞
- android典型代码系列(二)------sqlite数据库操作高级
- String类的实现
- 1.iOS开发系列--C语言之基础知识
- MyBatis学习笔记(三)数据的增删改查 CRUD操作
- scala 元组tuple的几个知识点-提供分
- 【设计模式】简单工厂模式——以一个简单的计算器为例
- Android Service生命周期 Service里面的onStartCommand()方法详解
- 跟着9张思维导图学习Javascript