牛客网PAT练兵场-数字黑洞

题解:循环即可

题目地址:https://www.nowcoder.com/questionTerminal/2e6a898974064e72ba09d05a60349c9e

 1 /**
 2 * Copyright(c)
 3 * All rights reserved.
 4 * Author : Ycute
 5 * Date : 2019-10-31-16.37.32
 6 * Description : 模拟输出
 7 */
 8 #include<iostream>
 9 #include<cstdio>
10 #include<cmath>
11 #include<cstring>
12 #include<algorithm>
13 using namespace std;
14 
15 //降序
16 int cmp0(int a,int b){
17     return a>b;
18 }
19 //升序
20 bool cmp1(int a,int b){
21     return a<b;
22 }
23 int main(){
24     int in[4];
25     int temp[4];
26     int p;
27     scanf("%d",&p);
28     //scanf("%1d%1d%1d%1d",&in[0],&in[1],&in[2],&in[3]);
29     temp[0]=in[0]=p/1000;
30     temp[1]=in[1]=p/100%10;
31     temp[2]=in[2]=p%100/10;
32     temp[3]=in[3]=p%10;
33     while(1){
34         if(in[0]==in[1]&&in[1]==in[2]&&in[2]==in[3]){
35             printf("N - N = 0000\n");
36             break;
37         }
38         int t1[4];
39         int t2[4];
40         t1[0]=temp[0];
41         t1[1]=temp[1];
42         t1[2]=temp[2];
43         t1[3]=temp[3];
44         t2[0]=temp[0];
45         t2[1]=temp[1];
46         t2[2]=temp[2];
47         t2[3]=temp[3];
48         sort(t1,t1+4,cmp0);
49         sort(t2,t2+4,cmp1);
50         int num0=t1[0]*1000+t1[1]*100+t1[2]*10+t1[3];
51         int num1=t2[0]*1000+t2[1]*100+t2[2]*10+t2[3];
52         int num2=num0-num1;
53         temp[0]=num2/1000;
54         temp[1]=num2/100%10;
55         temp[2]=num2%100/10;
56         temp[3]=num2%10;
57         printf("%d%d%d%d - %d%d%d%d = %d%d%d%d\n",t1[0],t1[1],t1[2],t1[3],t2[0],t2[1],t2[2],t2[3],temp[0],temp[1],temp[2],temp[3]);
58         if(temp[0]==6&&temp[1]==1&&temp[2]==7&&temp[3]==4) break ;
59     }
60     return 0;
61 }

 

posted @ 2019-10-31 17:58  LifeRunningError  Views(189)  Comments(0Edit  收藏  举报