与7相关的数的排序

Cherry_ / 2023-07-28 / 原文

时间限制:1秒 内存限制:128M

题目描述

鸭鸭对与7相关的数字着迷,有一天它得到了一组数据。它希望对这组数据进行如下操作:将与7相关的数从小到大排在前面,而与7无关的数字从小到大排在后面。请你帮助鸭鸭输出经过排序后的数列。与7相关的数是指能够被7整除或末尾含有数字7的数。

输入描述

第一行输入n,n<=100
第二行输入n个整数,即鸭鸭得到的数据,每个整数不大于10000。

输出描述

输出一行排好序的数字,数字与数字之间用一个空格隔开,先输出与7相关的数,再输出与7无关的数。

样例

输入

10
17 20 34 90 15 21 49 14 50 8

输出

14 17 21 49 8 15 20 34 50 90

解题思路:

  1. 首先,根据题目要求,需要将与7相关的数从小到大排在前面,与7无关的数字从小到大排在后面。
  2. 所以,首先创建两个空列表,一个用来存放与7相关的数,一个用来存放与7无关的数。
  3. 遍历输入的整数列表,将符合条件的数字分别放入对应的列表中。
  4. 分别对两个列表进行排序,然后合并成一个新的列表。
    5 最后,将新的列表输出。

代码实现如下:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int n;
    cin >> n;

    vector<int> related, unrelated;
    for (int i = 0; i < n; i++) {
        int num;
        cin >> num;
        if (num % 7 == 0 || num % 10 == 7) {
            related.push_back(num);
        } else {
            unrelated.push_back(num);
        }
    }

    sort(related.begin(), related.end());
    sort(unrelated.begin(), unrelated.end());

    for (int i = 0; i < related.size(); i++) {
        cout << related[i] << " ";
    }
    for (int i = 0; i < unrelated.size(); i++) {
        cout << unrelated[i] << " ";
    }
    cout << endl;

    return 0;
}
  1. 声明一个整数变量n,用于存储输入的整数个数。
  2. 声明两个vector容器related和unrelated,分别用于存放与7相关和与7无关的数。
  3. 使用一个循环,遍历输入的n个整数。
  4. 根据题目要求,将符条件的数字分别加入到related和unrelated容器中。
    5 使用sort函数对related和unrelated进行升序排序。
  5. 使用个循环,分别历related和unrelated容器,输出后的数字。
    7.后,输出换行符。