• PAT-A 1069. The Black Hole of Numbers


    1069. The Black Hole of Numbers

    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.

    Input Specification:

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

    Output Specification:

    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.

    Sample Input 1:

    6767
    

    Sample Output 1:

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

    Sample Input 2:

    2222
    

    Sample Output 2:

    2222 - 2222 = 0000
    

    程序代码:

    #include<stdio.h>
    char* zeng(char z[]);
    char* jian(char z[]);
    void int_char(char a[],int n);
    int char_int(char a[]);
    int main()
    {
        int N;
        char z[5];
        char j[5];
        int a=0,b=0;
        char num[5];
        scanf("%d",&N);
        if(N==6174)
            N=7641;
        while(N!=6174)
        {
            int_char(num,N);
            jian(num);
            a=char_int(num);
            zeng(num);
            b = char_int(num);
            N= a-b;
            printf("%s ",jian(num));
            printf("- %s = ",zeng(num));
            if(N!=0)
                printf("%04d",N);
            else
            {
                printf("0000");
                putchar('
    ');
                break;
            }
            putchar('
    ');
        }
    
        return 0;
    }
    char* zeng(char z[])
    {
        int i=3,j=0;
        char tmp;
        for(i=3;i>0;i--)
            for(j=0;j<i;j++)
            {
                if(z[j]>z[j+1])
                {
                    tmp = z[j];
                    z[j]=z[j+1];
                    z[j+1]=tmp;
                }   
            }   
        z[4]='';
        return z;
    }
    
    char* jian(char z[])
    {
        int i=3,j=0;
            char tmp;
            for(i=3;i>0;i--)
                    for(j=0;j<i;j++)
                    {
                            if(z[j]<z[j+1])
                            {
                                    tmp = z[j];
                                    z[j]=z[j+1];
                                    z[j+1]=tmp;
                            } 
                    } 
        z[4]='';
        return z;
    }
    void int_char(char a[],int n)
    {
        int i=0;
        a[0]=n%10+'0';
        a[1]=(n/10)%10+'0';
        a[2]=(n/100)%10+'0';
        a[3]=(n/1000)%10+'0';
        a[4]='';
    }
    int char_int(char a[])
    {
        int sum=0;
        sum =((a[0]-'0')*1000+(a[1]-'0')*100+(a[2]-'0')*10+(a[3]-'0'));
        return sum;
    }
    
    
  • 相关阅读:
    AngularJs练习Demo3
    AngularJs练习Demo2
    AngularJs练习Demo1
    上传图片预览,支持IE6
    上传图片预览插件(转)
    微信公众平台SDK
    C# 4.0 并行计算部分
    在没有安装有mvc3的主机上部署asp.net mvc3网站,需要包含的DLL文件
    全排列
    不重复排列
  • 原文地址:https://www.cnblogs.com/zhengkang/p/5734282.html
Copyright © 2020-2023  润新知