#P14008. 链表基本操作

链表基本操作

题目描述

设计一个 C++\verb|C++| 函数,函数名为 input\verb|input|,参数为 int n\verb|int n|,返回值类型是 list<int>\verb|list<int>|,函数内部实现输入 nn 个正整数并依次存储在 list\verb|list| 中,最后返回存储输入的整数的 list\verb|list|

设计一个 C++\verb|C++| 函数,函数名为 foo\verb|foo|,参数为 list<int> li\verb|list<int> li|,返回值类型是 list<int>\verb|list<int>|,函数内部实现将 li\verb|li| 中每个是奇数的元素 kk 修改为 3k+13k+1,然后删除所有是质数的元素,最后将 li\verb|li| 中的元素去重并升序排序,函数返回处理后的 li\verb|li|

设计一个 C++\verb|C++| 函数,函数名为 print\verb|print|,参数为 list<int> li\verb|list<int> li|,在函数体中遍历输出 li\verb|li| 的所有元素,元素间用一个空格隔开,最后要输出换行符。

输入格式

第一行是一个正整数 nn,第二行是 nn 个正整数,数据之间用一个空格隔开。

输出格式

第一行是 nn 个正整数,将输入所有正整数按照顺序依次输出,数据之间用一个空格隔开;

对于输入的序列中的每个元素 kk ,如果 kk 是奇数,修改为 3k+13k+1;然后删除序列中所有是质数的元素;最后将序列中的元素去重并升序排序。第二行就是将处理后的序列的元素依次输出,数据之间用一个空格隔开。

输入输出样例

10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
4 6 8 10 16 22 28

👀️ 本题需要你设计三个 C++\verb|C++| 函数来解决问题,提交代码模板如下:

//----------------------------------------------------------------------------
//!!!本题要提交的代码从这里开始!!!
#include<iostream>
#include<list>
using namespace std;

//函数参数n与题目描述一致,返回值是题目要求的结果(函数头必须和模板一致)
list<int> input(int n) {
    //在函数中实现题目要求的效果
	list<int> ans;
    //输入n个正整数依次存储在list<int>变量ans中,作为函数的返回值

	return ans;
}

//实现题目要求的效果(函数头必须和模板一致)
list<int> foo(list<int> li) {
    //在函数中实现题目要求的效果

}

//遍历输出list<int>参数li的所有元素,函数头必须和模板一致
void print(list<int> &li){
	//在函数中实现题目要求的效果

}

//!!!本题要提交的代码到这里结束!!!
//----------------------------------------------------------------------------

定义了这三个函数,在主函数中调用它就能解决问题,参考代码如下:

//----------------------------------------------------------------------------
//!!!本题要提交的代码从这里开始!!!
#include<iostream>
#include<list>
using namespace std;

//函数参数n与题目描述一致,返回值是题目要求的结果(函数头必须和模板一致)
list<int> input(int n) {
    //在函数中实现题目要求的效果
	list<int> ans;
    //输入n个正整数依次存储在list<int>变量ans中,作为函数的返回值

	return ans;
}

//实现题目要求的效果(函数头必须和模板一致)
list<int> foo(list<int> li) {
    //在函数中实现题目要求的效果

}

//遍历输出list<int>参数li的所有元素,函数头必须和模板一致
void print(list<int> &li){
	//在函数中实现题目要求的效果

}

//!!!本题要提交的代码到这里结束!!!
//----------------------------------------------------------------------------

#include<iostream>
int main(){
    int n;
    cin>>n;
    list<int> li = input(n);
    print(li);
	li = foo(li);
	print(li);
    return 0;
}

需要特别注意的是,本题提交的代码是定义函数的部分,不能提交完整的程序哦!

说明/提示

👀️ 对于100%100\% 的数据,1n100001k10001 \leq n \leq 10000,1 \leq k \leq 1000