小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作:
1、将a_i放入b序列的末尾
2、逆置b序列
小易需要你计算输出操作n次之后的b序列。
输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。 第二行包括n个整数a_i(1 ≤ a_i ≤ 10^9),即序列a中的每个整数,以空格分割。
在一行中输出操作n次之后的b序列,以空格分割,行末无空格。
4 1 2 3 4
4 2 1 3
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String args[]) { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); int n = 0; String strOfnumbers = ""; try { n = Integer.parseInt(bufferedReader.readLine()); strOfnumbers = bufferedReader.readLine(); } catch (IOException e) { e.printStackTrace(); } String[] numStr = strOfnumbers.split(" "); LinkedList<Integer> list = new LinkedList<>(); for (int i = 1; i < n + 1; i++) { if (i % 2 == 0) { list.addLast(Integer.parseInt(numStr[i - 1])); } else { list.addFirst(Integer.parseInt(numStr[i - 1])); } } if (n % 2 == 0) { Collections.reverse(list); } for (Integer i : list) { System.out.print(i+" "); } } }
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { vector<int> sum; vector<int> res; int num; cin>>num; while(num>0) { int number; cin>>number; sum.push_back(number); --num; } int n=sum.size(); int i=n-1; while(i>=0) { res.push_back(sum[i]); i-=2; } if(i==-1) i=0; else i=1; while(i<n-1) { res.push_back(sum[i]); i+=2; } for(i=0;i<n;++i) { cout<<res[i]<<" "; } return 0; }