题目描述
思路
1.本题主要是数字的拆分和拆分后的重组
2.需要注意的事项是,数组要初始化为0,否则可能在后续造成溢出。
代码
#include<stdio.h>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int n;
scanf("%d",&n);
while(1)
{
int a[5]={0};
int t=0;
//得到n中每一个数
while(n!=0)
{
a[t]=n%10;
n=n/10;
t++;
}
int max=0;
sort(a,a+4);
int m=1;
for(int i=0;i<4;i++)
{
max+=a[i]*m;
m*=10;
}
int min=0;
sort(a,a+4,cmp);
m=1;
for(int i=0;i<4;i++)
{
min+=a[i]*m;
m*=10;
}
int ans=max-min;
printf("%04d - %04d = %04d\n",max,min,ans);
n=ans;
if(ans==0||ans==6174)
{
break;
}
}
return 0;
}