原题描述
思路分析
- 为方便排序,以
string
类型作为读入。因为要做减法,所以还得转换为int型整数,我用的cb
显示无法识别to_string
函数和stoi
函数…但是pat提交是可以的。- 因为要补齐位数,所以无论输入的是几位数,都要在高位添
0
以满足于四位数减法。用string
类型下的insert
函数可以实现。2.1 其实不一定补在高位,因为反正还会排序!所以补的0会自动到高位去啦!!!
代码部分
#include<bits/stdc++.h>
using namespace std;
bool cmp(char a, char b)
{
return a>b;
}
int main()
{
ios::sync_with_stdio(0);
string N, m, n;
cin >> N;
//²¹ÆëËÄλÊý
N.insert(0, 4-N.length(), '0');
do
{
m = N; n = N;
sort(m.begin(), m.end(), cmp);
sort(n.begin(), n.end());
int result = stoi(m) - stoi(n);
N = to_string(result);
N.insert(0, 4-N.length(), '0');
cout << m << " " << "-" << " " << n << " " <<"=" << " " << N << endl;
}while(N != "6174" && N != "0000");
return 0;
}
被这两个函数搞死了。