不得不先说,这道题坑爹的输入。。。输入数据只要不是4位就要输出“No!!”。
#include <iostream>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
bool cmp(char a, char b)
{
return a > b;
}
int main()
{
string digits;
int Max, Min, Sub, times;
char temp[256];
while(cin >> digits)
{
if(digits[0] == '-')
break;
else
{
cout << "N=" << atoi(digits.c_str()) << ':' << endl;
sort(digits.begin(), digits.end(), cmp);
if((digits[0] == digits[3]) || (digits.size() != 4))
{
cout << "No!!" << endl;
}
else
{
for(int i = 1; ; i++)
{
sort(digits.begin(), digits.end(), cmp);
Max = atoi(digits.c_str());
sort(digits.begin(), digits.end());
Min = atoi(digits.c_str());
Sub = Max - Min;
cout << Max << '-' << Min << '=' << Sub << endl;
if((Sub == 0) || (Sub == 6174))
{
cout << "Ok!!" << ' ' << i << ' ' << "times" << endl;
break;
}
else
{
sprintf(temp, "%d", Sub);
digits = temp;
//cout << "Look here: " << digits << ' ' << Sub << endl;
}
}
}
}
}
return 0;
}