首页 > 代码库 > *1019. 数字黑洞

*1019. 数字黑洞

  1 /*  2  * Main.c  3  * 1019. 数字黑洞  4  *  Created on: 2014年8月31日  5  *      Author: Boomkeeper  6  *******部分通过******  7  */  8   9 #include <stdio.h> 10 #include <stdlib.h> 11  12 /* 13  *排序整数的各个位数字 14  *src[4]:原数组 15  *dstDown[4]:降序排序结果 16  *dstUp[4]:升序排序结果 17  */ 18 void sort(int dstUp[4],int dstDown[4],int src[4]){ 19  20     int i,j; 21     int temp; 22     //赋值 23     for(i=0;i<4;i++){ 24         dstUp[i]=src[i]; 25         dstDown[i]=src[i]; 26     } 27     //排序,up 28     for(i=0;i<4;i++){ 29         for(j=0;j<4-i-1;j++){ 30             if(dstUp[j]>dstUp[j+1]){ 31                 temp=dstUp[j]; 32                 dstUp[j]=dstUp[j+1]; 33                 dstUp[j+1]=temp; 34             } 35         } 36     } 37     //排序,down 38     for(i=0;i<4;i++){ 39         for(j=0;j<4-i-1;j++){ 40             if(dstDown[j]<dstDown[j+1]){ 41                 temp=dstDown[j]; 42                 dstDown[j]=dstDown[j+1]; 43                 dstDown[j+1]=temp; 44             } 45         } 46     } 47 } 48  49 /* 50  * 拆分整数的各位数字,以进行排序 51  * 个位:num[3] 52  * 十位:num[2] 53  * 百位:num[1] 54  * 千位:num[0] 55  */ 56 void split(int n,int num[4]){ 57  58     num[3]=n%10; 59     n/=10; 60     num[2]=n%10; 61     n/=10; 62     num[1]=n%10; 63     n/=10; 64     num[0]=n; 65 } 66  67 /* 68  * 获得排序后的新的4位整数,做差,并返回结果s 69  */ 70 int Kaprebar(int temp){ 71  72     int num1[4]={0},num2[4]={0},num3[4];//分别存储被减数、减数、差的各位数字 73     int num_1,num_2;//被减数、减数 74  75     split(temp,num3); 76     sort(num2,num1,num3); 77  78     //做差 79     num_1=num1[0]*1000+num1[1]*100+num1[2]*10+num1[3]; 80     num_2=num2[0]*1000+num2[1]*100+num2[2]*10+num2[3]; 81     temp=num_1-num_2; 82     if(temp==0){ 83         printf("%04d - %04d = %04d\n",num_1,num_2,temp); 84         exit(0); 85     } else{ 86         printf("%04d - %04d = %04d\n",num_1,num_2,temp); 87     } 88     //返回差 89     return temp; 90 } 91  92 int main(void) { 93  94     int n; //题目中的N 95  96     scanf("%4d", &n); 97     int temp = n; 98  99     while (temp != 6174) {100         temp = Kaprebar(temp);101     }102 103     return 0;104 }

 

 

题目链接:

http://pat.zju.edu.cn/contests/pat-b-practise/1019

 

 

.

*1019. 数字黑洞