Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- void swap(int** a, int** b) {
- int* temp = *a;
- *a = *b;
- *b = temp;
- }
- int digitsSum(string x) {
- int sum = 0;
- while (x) {
- sum += x % 10;
- x /= 10;
- }
- return sum;
- }
- int root(string x) {
- int temp;
- temp = digitsSum(x);
- while (temp > 9) {
- temp = digitsSum(temp);
- }
- return temp;
- }
- void sort(int** a, int n) {
- int indOfMinElem;
- for (int i = 0; i < n - 1; ++i) {
- indOfMinElem = i;
- for (int j = i + 1; j < n; ++j) {
- if (a[j][1] < a[indOfMinElem][1]) {
- indOfMinElem = j;
- }
- else if (a[j][1] == a[indOfMinElem][1] && a[j][0] < a[indOfMinElem][0]) {
- indOfMinElem = j;
- }
- }
- swap(&a[i], &a[indOfMinElem]);
- }
- }
- int main() {
- int n;
- cin >> n;
- char*** numbers = new char** [n];
- for (int i = 0; i < n; ++i) {
- numbers[i] = new char[1001][2];
- }
- for (int i = 0; i < n; ++i) {
- cin >> numbers[i][0];
- numbers[i][1] = root(numbers[i][0]);
- }
- sort(numbers, n);
- for (int i = 0; i < n; ++i) {
- cout << numbers[i][0] << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement