【题意】
求数字黑洞6174的计算过程
【思路】
直接码
【注意点】
若输入的数就是6174也至少要输出一次
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> num2vec(int num){
vector<int> res;
res.resize(4);
for(int i=3; i>=0; i--){
res[i] = num%10;
num /= 10;
}
return res;
}
int vec2num(vector<int> vec){
int num = 0;
for(int i=0; i<4; i++){
num = num*10+vec[i];
}
return num;
}
int main(int argc, char const *argv[])
{
vector<int> maxNum,minNum;
int number;
maxNum.resize(4);
minNum.resize(4);
scanf("%d", &number);
minNum = num2vec(number);
sort(minNum.begin(),minNum.end());
if(minNum[0]==minNum[3]){
printf("%d - %d = 0000", number, number);
}
else{
do{
maxNum = minNum;
reverse(maxNum.begin(),maxNum.end());
int max = vec2num(maxNum);
int min = vec2num(minNum);
number = max-min;
printf("%d - %04d = %04d\n", max, min, number);
minNum = num2vec(number);
sort(minNum.begin(),minNum.end());
}while(number!=6174);
}
system("pause");
return 0;
}