测试点5 注意输入为6174的情况 测试点
测试点2 注意输入是1/2/3位数字
#include <iostream>
#include <cstdio>
#include <string>
#include <set>
#include <algorithm>
using namespace std;
const int maxn = 100010;
int main()
{
set<int> s;
int a,min = 0, max = 0, copy, cont = 0;
int num[4] = {0};
cin >> a;
if(a == 0)
{
printf("%04d - %04d = %04d\n",a, a, a - a);
}
else
{
copy = a;
while(copy)
{
copy /= 10;
cont++;
}
if(cont == 1) a = a * 1000;
else if(cont == 2) a = a * 100;
else if(cont == 3) a = a * 10;
copy = a;
while(copy)
{
s.insert(copy % 10);
copy /= 10;
cont++;
}
if(s.size() == 1)
{
printf("%04d - %04d = %04d\n",a, a, a - a);
}
else
{
while(1)
{
int max = 0, min = 0;
for(int i = 0; i < 4;i++)
{
num[i] = a % 10;
a /= 10;
}
sort(num, num + 4);
for(int i = 0; i < 4; i++)
{
min = min * 10 + num[i];
}
for(int i = 3; i >= 0; i--)
{
max = max * 10 + num[i];
}
a = max - min;
printf("%04d - %04d = %04d\n",max, min, a);
if(a == 6174) break;
}
}
}
return 0;
}