例如,数字1234,每个数字的和是10,小于83,和是11,如果和是相同的,那么比较它们的ASCII码,例如,71小于8,81小于810。
1条回答 默认 最新
暗夜无风 2021-07-09 10:15关注#include <iostream> using namespace std; #include <vector> #include <algorithm> #include <string> #define N 1000 int countN(int num) { int sum = 0; while (num) { sum += num % 10; num /= 10; } return sum; } bool cmpASCII(int op1, int op2) { string s1 = to_string(op1); string s2 = to_string(op2); int n1 = s1.size(); int n2 = s2.size(); for (int i = 0; i < n1 && i < n2; i++) { if (s1[i] < s2[i]) { return false; } else if (s1[i] > s2[i]) { return true; } } if (n1 < n2) { return false; } return true; } int main() { vector<int> arr; for (int i = 1; i < N; i++) { arr.push_back(i); } sort(arr.begin(), arr.end(), [&](int& op1, int& op2){ return (countN(op1) == countN(op2) && cmpASCII(op1, op2)) || countN(op1) > countN(op2); }); for (auto num : arr) { cout << num << endl; } return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报