题目
题目地址:PAT 乙级 1019
思路
本题没有考虑到小于1000的情况,当小于1000的时需要给vector的向量中推入0,直到向量中有四位数字,之后再进行排序并进行相关计算
代码
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std; bool compare(int a, int b) {
return a > b;
} int main() {
vector<int> num;
int n = ;
cin >> n;
while () {
int chu = n, yu = ;
while (chu >= ) {
yu = chu % ;
chu /= ;
num.push_back(yu);
}
num.push_back(chu);
if (num.size() < ) {
for (int i = num.size(); i < ; i++)
num.push_back();
}
sort(num.begin(), num.end(), compare);
int large = ;
int jie = num.size() - ;
for (int i = ; i < num.size(); i++) {
large += num[i] * pow(, jie);
jie--;
}
if (large < ) {
if (large > )
cout << '';
else if (large > )
cout << "";
else
cout << "";
}
cout << large << " - ";
sort(num.begin(), num.end());
int little = ;
jie = num.size() - ;
for (int i = ; i < num.size(); i++) {
little += num[i] * pow(, jie);
jie--;
}
if (little < ) {
if (little > )
cout << '';
else if (little > )
cout << "";
else
cout << "";
}
cout << little << " = ";
if (large - little < ) {
if (large - little > )
cout << '';
else if (large - little > )
cout << "";
else
cout << "";
}
cout << large - little << endl;
if (large - little == )
break;
else if (large == little)
break;
else {
n = large - little;
num.clear();
}
} return ;
}