NYOJ 11-奇偶数分离

时间限制:3000 ms | 内存限制:65535 KB | 难度:1

描述

有一个整型偶数$n(2<= n <=10000)$,你要做的是:先把$1$到$n$中的所有奇数从小到大输出,再把所有的偶数从小到大输出。

输入

第一行有一个整数$i(2<=i<30)$表示有$i$组测试数据;
每组有一个整型偶数$n$。

输出

第一行输出所有的奇数
第二行输出所有的偶数

样例输入

2
10
14

样例输出

1 3 5 7 9
2 4 6 8 10
 
1 3 5 7 9 11 13
2 4 6 8 10 12 14

题目来源

http://acm.nyist.net/JudgeOnline/problem.php?pid=11

程序实现1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <vector>
using namespace std;

int main(){
int num;
cin>>num;
int x [num];
for(int i=0; i<num; i++){
cin>>x[i];
}
vector<int> a,b;
for(int i=0; i<num; i++){
for(int j=1; j<=x[i]; j++){
if(j%2) a.push_back(j);
else b.push_back(j);
}
for(int j=0; j<a.size(); j++){
cout<<a.at(j)<<" ";
}
cout<<endl;
for(int j=0; j<b.size(); j++)
cout<<b.at(j)<<" ";
cout<<endl<<endl;
a.clear();b.clear();
}
}

程序实现2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <vector>
using namespace std;

void display(int x){
vector<int> a,b;
for(int j=1; j<=x; j++){
if(j%2) a.push_back(j);
else b.push_back(j);
}
for(int j=0; j<a.size(); j++){
cout<<a.at(j)<<" ";
}
cout<<endl;
for(int j=0; j<b.size(); j++)
cout<<b.at(j)<<" ";
cout<<endl<<endl;
}

int main(){
int num;
cin>>num;
int x;
while(num--){
cin>>x;
display(x);
}
}

区别

  1. 第二个简洁,但是边输入边处理,也没存储起来,不过南阳的判断是正确的。原来可以这样ToT
  2. 为了方便直接用了C++ Vectors,其实动态指针数组应该会更好Orz

结果 时间 内存 语言 提交时间
程序2 Accepted 0 308 C/C++ 03-14 14:51:29
程序1 Accepted 4 308 C/C++ 03-14 14:46:19

文章目录
  1. 1. 程序实现1
  2. 2. 程序实现2
  3. 3. 区别

20160315-acm-2/

本页二维码