码迷,mamicode.com
首页 > 其他好文 > 详细

PAT:1019. 数字黑洞 (20) AC(同甲级1069)

时间:2015-03-05 20:52:58      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
#include<algorithm>
using namespace std;
const int AIM=6174;

int n;
int arr[4];

bool NonIncreasingOrder(int a,int b)
{
  return a>b;
}

bool NonDecreasingOrder(int a,int b)
{
  return a<b;
}

int toNum()          //得到这个数字
{
  int sum=0;
  for(int i=0 ; i<4 ; ++i)
  {
    sum=sum*10+arr[i];
  }
  return sum;
}

void toArr()
{
  for(int i=0 ; i<4 ; ++i)    //拆解数字
  {
    arr[i]=n%10;
    n/=10;
  }
}
int main()
{

  scanf("%d",&n);
  int MIN,MAX;            //最小排列数,最大排列数
  
  while(1)
  {
    toArr();                //拆解
    sort(arr,arr+4,NonIncreasingOrder);    //生成最大数
    MAX=toNum();
    sort(arr,arr+4,NonDecreasingOrder);    //生成最小数
    MIN=toNum();
    n=MAX-MIN;
    printf("%04d - %04d = %04d\n",MAX,MIN,n);
    if(n==0 || n==AIM)        //n是4个相同数字(包括0000的情况,不用额外考虑),或者剪到最后了
      break;
  }
  return 0;
}

PAT:1019. 数字黑洞 (20) AC(同甲级1069)

标签:

原文地址:http://www.cnblogs.com/Evence/p/4316649.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!