题目大意:找出黑洞数字并且写出每一步过程。
思路:
- 数字前面补0记得用printf %04d这种很方便。
- 数字转数组,数组转数字要掌握好。
#include<iostream>
#include<cstring>
#include<algorithm>
#include<string>
#include<time.h>
#include<stdio.h>
using namespace std;
bool cmp(int a, int b)
{
return a > b;
}
void toArray(int n, int num[])
{
for (int i = 0; i < 4; i++)
{
num[i] = n % 10;
n /= 10;
}
}
int toNumber(int num[])
{
int sum = 0;
for (int i = 0; i < 4; i++)
{
sum = sum * 10 + num[i];
}
return sum;
}
int main()
{
int n, MIN, MAX;
int num[4];
cin >> n;
while (1)
{
toArray(n, num);
sort(num, num + 4);
MIN = toNumber(num);
sort(num, num + 4,cmp);
MAX = toNumber(num);
n = MAX - MIN;
printf("%04d - %04d = %04d
", MAX, MIN, n);
if (n == 0 ||n == 6174)
break;
}
}