WY37. 操作序列
描述
小易有一个长度为 n 的整数序列,,...,。然后考虑在一个空序列 b 上进行 n 次以下操作:输入描述
输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。 第二行包括n个整数 ai (1 ≤ ai ≤ 10^9),即序列a中的每个整数,以空格分割。输出描述
在一行中输出操作 n 次之后的 b 序列,以空格分割,行末无空格。示例1
输入:
4 1 2 3 4
输出:
4 2 1 3
C++ 解法, 执行用时: 32ms, 内存消耗: 5880KB, 提交时间: 2020-08-22
#include <iostream> int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int64_t i, n; uint64_t a[200000]; std::cin >> n; for(i = 0; i < n; i++) { uint64_t v; std::cin >> v; a[i] = v; } for(i = n - 1; i >= 0; i -= 2) std::cout << a[i] << " "; if(n % 2) i = 1; else i = 0; for(; i < n; i += 2) std::cout << a[i] << " "; std::cout << std::endl; return EXIT_SUCCESS; }
C 解法, 执行用时: 35ms, 内存消耗: 3112KB, 提交时间: 2021-09-19
#include <stdio.h> int main() { int n; while(scanf("%d",&n)!=EOF) { int arr[n]; int index=0; while(index<n) { scanf("%d",&arr[index++]); } if(n%2==0) { for(int i=n-1;i>0;i=i-2) printf("%d ",arr[i]); for(int i=0;i<n;i=i+2) { if(i==n-1) printf("%d",arr[i]); else printf("%d ",arr[i]); } } else { for(int i=n-1;i>=0;i=i-2) printf("%d ",arr[i]); for(int i=1;i<n;i=i+2) { if(i==n-1) printf("%d",arr[i]); else printf("%d ",arr[i]); } } } return 0; }