美文网首页PAT
甲级| 1069.The Black Hole of Numbe

甲级| 1069.The Black Hole of Numbe

作者: yzbkaka | 来源:发表于2019-08-09 16:56 被阅读3次

    题目描述

    For any 4-digit integer except the ones with all the digits being the same, if we sort the digits in non-increasing order first, and then in non-decreasing order, a new number can be obtained by taking the second number from the first one. Repeat in this manner we will soon end up at the number 6174 -- the black hole of 4-digit numbers. This number is named Kaprekar Constant.

    For example, start from 6767, we'll get:

    7766 - 6677 = 1089
    9810 - 0189 = 9621
    9621 - 1269 = 8352
    8532 - 2358 = 6174
    7641 - 1467 = 6174
    ... ...
    Given any 4-digit number, you are supposed to illustrate the way it gets into the black hole.

    输入描述

    Each input file contains one test case which gives a positive integer N in the range (0,10​4​​).

    输出描述

    If all the 4 digits of N are the same, print in one line the equation N - N = 0000. Else print each step of calculation in a line until 6174 comes out as the difference. All the numbers must be printed as 4-digit numbers.

    输入例子1

    6767

    输出例子1

    7766 - 6677 = 1089
    9810 - 0189 = 9621
    9621 - 1269 = 8352
    8532 - 2358 = 6174

    输入例子2

    2222

    输出例子2

    2222 - 2222 = 0000

    我的代码

    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    bool cmp(int a,int b){
        return a<b;
    }
    int main(){
        int num,a[4];
        scanf("%d",&num);
        a[0]=num/1000;
        a[1]=num%1000/100;
        a[2]=num%1000%100/10;
        a[3]=num%1000%100%10;
        if(a[0]==a[1]&&a[0]==a[2]&&a[0]==a[3]){
            printf("%d%d%d%d - %d%d%d%d = 0000",a[0],a[0],a[0],a[0],a[0],a[0],a[0],a[0]);
            return 0;
        }
        int max,min;
        do{
            a[0]=num/1000;
            a[1]=num%1000/100;
            a[2]=num%1000%100/10;
            a[3]=num%1000%100%10;
            sort(a,a+4,cmp);
            min=a[0]*1000+a[1]*100+a[2]*10+a[3];
            max=a[3]*1000+a[2]*100+a[1]*10+a[0];
            num=max-min;
            printf("%d%d%d%d - %d%d%d%d = %04d\n",a[3],a[2],a[1],a[0],a[0],a[1],a[2],a[3],num); 
        }while(num!=6174 && num!=0);
        return 0;
    } 
    

    相关文章

      网友评论

        本文标题:甲级| 1069.The Black Hole of Numbe

        本文链接:https://www.haomeiwen.com/subject/etwhjctx.html