题目链接
坑点
1、输入可能不是4位数
2、见注释
实现
// 1019.cpp : 定义控制台应用程序的入口点。
//
#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
string str1,str2;
cin >> str1;
str1.insert(0, 4 - str1.size(), '0'); //对不是4位数的输入进行补齐
bool isSame = true;
for (int i = 0; i + 1 < str1.size(); i++)
{
if (str1[i] != str1[i + 1])
{
isSame = false;
break;
}
}
if (isSame)
printf("%s - %s = 0000", str1.c_str(), str1.c_str());
else
{
int num1 = 0, num2 = 0, num3 = 0;
do
{
sort(str1.begin(), str1.end());
reverse(str1.begin(), str1.end());
num1 = atoi(str1.c_str());
reverse(str1.begin(), str1.end());
num2= atoi(str1.c_str());
num3 = num1 - num2;
str1 = to_string(num3);
str1.insert(0, 4 - str1.size(), '0'); //计算出来的结果可能不是4位数
printf("%04d - %04d = %04d\n", num1, num2, num3);
} while ((num3 != 6174));
}
return 0;
}