标签:
#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