CF1275C.#define Задача B ...

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Компания «ВКонтакте» активно использует языки C/C++ для разработки движков. Старший разработчик Вася — большой любитель языка C, ведь только в нем можно полностью раскрыть потенциал Define-Oriented Programming. В языке C директива #define позволяет сделать прямую подстановку куска кода в любое место программы. Например, при исполнении следующего кода значение переменной vv будет равно 1111 (в переменную vv запишется результат выражения 3+4⋅23 + 4 \cdot 2).

#define add(x) + x#define mul(y) * yint v = 3 add(4) mul(2);

Недавно Вася написал небольшую программу, которая заполняет массив большой длины. Программа выглядит следующим образом:

#define A0(x) x,#define A1(x) A0(x) A0(x + 1) A0(x + 3) A0(x + 4)#define A2(x) A1(x) A1(x + 1) A1(x + 3) A1(x + 4)#define A3(x) A2(x) A2(x + 1) A2(x + 3) A2(x + 4)#define A4(x) A3(x) A3(x + 1) A3(x + 3) A3(x + 4)...#define A24(x) A23(x) A23(x + 1) A23(x + 3) A23(x + 4)#define A25(x) A24(x) A24(x + 1) A24(x + 3) A24(x + 4)const long long values[1125899906842624] = { A25(0) };

К сожалению, его программа не компилируется в силу несовершенства его компьютера, но ему очень интересно знать, какие значения лежали бы в массиве valuesvalues, если бы ему удалось скомпилировать и запустить программу. Помогите ему это узнать.

VKontakte 公司在开发引擎时广泛使用 C/C++ 语言。高级开发工程师瓦夏(Vasya)是 C 语言的忠实爱好者,因为只有在 C 语言中才能充分展现“宏导向编程”(Define-Oriented Programming)的全部潜力。在 C 语言中,预处理指令 #define 允许将一段代码直接展开(文本替换)到程序中的任意位置。例如,执行以下代码后,变量 vv 的值将为 1111(即变量 vv 中存储的是表达式 3+4⋅23 + 4 \cdot 2 的计算结果):

#define add(x) + x
#define mul(y) * y
int v = 3 add(4) mul(2);

最近,瓦夏编写了一个小型程序,用于填充一个长度极大的数组。该程序如下所示:

#define A0(x) x,
#define A1(x) A0(x) A0(x + 1) A0(x + 3) A0(x + 4)
#define A2(x) A1(x) A1(x + 1) A1(x + 3) A1(x + 4)
#define A3(x) A2(x) A2(x + 1) A2(x + 3) A2(x + 4)
#define A4(x) A3(x) A3(x + 1) A3(x + 3) A3(x + 4)
...
#define A24(x) A23(x) A23(x + 1) A23(x + 3) A23(x + 4)
#define A25(x) A24(x) A24(x + 1) A24(x + 3) A24(x + 4)
const long long values[1125899906842624] = { A25(0) };

遗憾的是,由于他所用计算机的局限性,该程序无法成功编译;但他非常想知道:如果程序能够成功编译并运行,数组 valuesvalues 中最终会包含哪些值? 请帮助他解答这个问题。

输入格式

В первой строке дано одно целое число nn (1≤n≤1 0001 \le n \le 1\,000) — количество элементов массива, значения которых интересуют Васю.

Следующие nn строк содержат nn целых чисел posipos_i (0≤posi≤1 125 899 906 842 6230 \le pos_i \le 1\,125\,899\,906\,842\,623) — позиции, для которых нужно узнать значение в массиве.

第一行包含一个整数 nn(1≤n≤1 0001 \le n \le 1\,000)—— 表示数组中需要查询的元素个数。

接下来的 nn 行每行包含一个整数 posipos_i(0≤posi≤1 125 899 906 842 6230 \le pos_i \le 1\,125\,899\,906\,842\,623)—— 表示需要查询数组中该位置处的值。

输出格式

Выведите nn строк. В ii-й строке должно содержаться значение элемента массива на позиции posipos_i.

输出 nn 行。第 ii 行应包含数组中位置为 posipos_i 的元素的值。

输入输出样例

  • 输入#1

    5
    0
    1
    3
    5
    8

    输出#1

    0
    1
    4
    2
    3

说明/提示

Начало этого массива выглядит следующим образом:

const long long values[1125899906842624] = { 0, 1, 3, 4, 1, 2, 4, ... };

该数组的开头部分如下所示:

const long long values[1125899906842624] = { 0, 1, 3, 4, 1, 2, 4, ... };

输入解题思路,AI测评打分。不知道怎么写?

首页