CF1006A.Adjacent Replacements

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Adjacent Replacements

题目描述

Mishka 收到了一个长度为 nn 的整数数组 aa 作为生日礼物(真是个惊喜)。

Mishka 并不喜欢这个礼物,想要对它做些改变。他发明了一种算法,称之为“Mishka 的相邻替换算法”。该算法的步骤如下:

  • 将数组 aa 中每个 11 替换为 22
  • 将数组 aa 中每个 22 替换为 11
  • 将数组 aa 中每个 33 替换为 44
  • 将数组 aa 中每个 44 替换为 33
  • 将数组 aa 中每个 55 替换为 66
  • 将数组 aa 中每个 66 替换为 55
  • \dots
  • 将数组 aa 中每个 109110^9 - 1 替换为 10910^9
  • 将数组 aa 中每个 10910^9 替换为 109110^9 - 1

注意,中间的省略号表示 Mishka 对每一对相邻整数(即每个 i{1,2,,5108}i \in \{1, 2, \ldots, 5 \cdot 10^8\},对应的 (2i1,2i)(2i-1, 2i))都按照上述方式进行替换。

例如,对于数组 a=[1,2,4,5,10]a = [1, 2, 4, 5, 10],算法的执行过程如下:

[1,2,4,5,10][1, 2, 4, 5, 10] \rightarrow(将所有 11 替换为 22[2,2,4,5,10]\rightarrow [2, 2, 4, 5, 10] \rightarrow(将所有 22 替换为 11[1,1,4,5,10]\rightarrow [1, 1, 4, 5, 10] \rightarrow(将所有 33 替换为 44[1,1,4,5,10]\rightarrow [1, 1, 4, 5, 10] \rightarrow(将所有 44 替换为 33[1,1,3,5,10]\rightarrow [1, 1, 3, 5, 10] \rightarrow(将所有 55 替换为 66[1,1,3,6,10]\rightarrow [1, 1, 3, 6, 10] \rightarrow(将所有 66 替换为 55)$\rightarrow [1, 1, 3, 5, 10] \rightarrow \dots \rightarrow [1, 1, 3, 5, 10] \rightarrow$(将所有 1010 替换为 99[1,1,3,5,9]\rightarrow [1, 1, 3, 5, 9]。后续的步骤不会再改变数组。

Mishka 很懒,不想亲自执行这些操作,但他很想知道最终的结果。请你帮他计算出最终的数组。

输入格式

输入的第一行包含一个整数 nn1n10001 \le n \le 1000),表示 Mishka 生日礼物的元素个数(令人惊讶的是,是一个数组)。

输入的第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1091 \le a_i \le 10^9),表示数组中的元素。

输出格式

输出 nn 个整数 b1,b2,,bnb_1, b_2, \dots, b_n,其中 bib_i 表示对数组 aa 应用“Mishka 的相邻替换算法”后,第 ii 个元素的最终值。注意,数组元素的顺序不能改变。

说明/提示

第一个样例在题目描述中已经给出。

由 ChatGPT 4.1 翻译

样例

5
1 2 4 5 10
1 1 3 5 9
10
10000 10 50605065 1 5 89 5 999999999 60506056 1000000000
9999 9 50605065 1 5 89 5 999999999 60506055 999999999

在线编程 IDE

建议全屏模式获得最佳体验