Universal Cup Judging System

Universal Cup

Límite de tiempo: 1 s Límite de memoria: 1024 MB
Estadísticas

Среднее средних — это не всегда среднее.

VegiCat только что изучил деревья отрезков и хочет потренироваться в их использовании.

Для положительного целого числа $n$ он рассматривает последовательность $a_i = i$ ($1 \le i \le n$). Он решает построить дерево отрезков, чтобы отвечать на запросы среднего на отрезке для этой последовательности.

В дереве отрезков VegiCat каждая вершина соответствует отрезку $[l, r]$ и хранит значение $v_{l,r}$, которое, по задумке VegiCat, должно представлять среднее значение на этом отрезке. Корень соответствует всему отрезку $[1, n]$.

problem_23592_1a491bf2ea3d5c638f75cb749b35c44a.png

Однако VegiCat ошибочно полагает, что среднее значение родительского отрезка всегда равно среднему значений, хранящихся в двух его дочерних вершинах. Поэтому он складывает значения, хранящиеся в двух дочерних вершинах, и делит сумму на $2$.

Сначала VegiCat строит дерево отрезков, вызывая $\text{Build}(1, n)$. После того как дерево отрезков построено, он отвечает на запрос для отрезка $[L, R]$, вызывая $\text{Query}(1, n, L, R)$. Обе рекурсивные процедуры приведены в Алгоритме 1.

Алгоритм 1 Построение и запрос

$$ \begin{array}{rl} 1: & \textbf{procedure } \text{Build}(l, r) \\ 2: & \quad \textbf{if } l = r \textbf{ then} \\ 3: & \quad \quad v_{l,l} \leftarrow a_l \\ 4: & \quad \quad \textbf{return} \\ 5: & \quad \textbf{end if} \\ 6: & \quad m \leftarrow \left\lfloor \dfrac{l + r}{2} \right\rfloor \\ 7: & \quad \text{Build}(l, m) \\ 8: & \quad \text{Build}(m + 1, r) \\ 9: & \quad v_{l,r} \leftarrow \dfrac{v_{l,m} + v_{m+1,r}}{2} \\ 10: & \textbf{end procedure} \\[6pt] 11: & \textbf{procedure } \text{Query}(l, r, L, R) \\ 12: & \quad \textbf{if } L \le l \textbf{ and } r \le R \textbf{ then} \\ 13: & \quad \quad \textbf{return } v_{l,r} \\ 14: & \quad \textbf{end if} \\ 15: & \quad m \leftarrow \left\lfloor \dfrac{l + r}{2} \right\rfloor \\ 16: & \quad \textbf{if } R \le m \textbf{ then} \\ 17: & \quad \quad \textbf{return } \text{Query}(l, m, L, R) \\ 18: & \quad \textbf{else if } L > m \textbf{ then} \\ 19: & \quad \quad \textbf{return } \text{Query}(m + 1, r, L, R) \\ 20: & \quad \textbf{end if} \\ 21: & \quad x \leftarrow \text{Query}(l, m, L, R) \\ 22: & \quad y \leftarrow \text{Query}(m + 1, r, L, R) \\ 23: & \quad \textbf{return } \dfrac{x + y}{2} \\ 24: & \textbf{end procedure} \end{array} $$

Хотя алгоритм VegiCat в общем случае неверен, для некоторых отрезков он возвращает правильное среднее значение. Посчитайте количество таких отрезков.

Для отрезка $[L, R]$ его истинное среднее равно

$$ \frac{\sum_{i=L}^{R} a_i}{R - L + 1}. $$

Точнее, посчитайте количество пар $(L, R)$, удовлетворяющих условию $1 \le L \le R \le n$, таких что

$$ \text{Query}(1, n, L, R) = \frac{\sum_{i=L}^{R} a_i}{R - L + 1}. $$

Все средние значения вычисляются как точные рациональные числа, без округления или усечения.

Входные данные

Первая строка содержит целое число $T$ ($1 \le T \le 10^4$) — количество наборов входных данных. Далее следует описание наборов входных данных.

Каждая из следующих $T$ строк содержит одно целое число $n$ ($1 \le n \le 10^6$) — длину последовательности.

Гарантируется, что сумма $n$ по всем наборам входных данных не превосходит $2 \cdot 10^6$.

Выходные данные

Для каждого набора входных данных выведите одно целое число — количество отрезков $[L, R]$, для которых процедура запроса VegiCat возвращает в точности истинное среднее.

Примеры

Входные данные 1

3
1
5
14

Выходные данные 1

1
10
35

Примечание

Во втором наборе входных данных при $n = 5$ есть $10$ подходящих отрезков:

$$ \begin{aligned} &[1, 1],\ [1, 2],\ [2, 2],\ [2, 3],\ [2, 5], \\ &[3, 3],\ [3, 4],\ [4, 4],\ [4, 5],\ [5, 5]. \end{aligned} $$

Например, запрос для $[2, 5]$ возвращает

$$ \frac{\frac{2+3}{2} + \frac{4+5}{2}}{2} = \frac{7}{2}, $$

что равно истинному среднему чисел $2, 3, 4, 5$. Следовательно, отрезок $[2, 5]$ учитывается.

Напротив, запрос для $[1, 5]$ возвращает

$$ \frac{\frac{\frac{1+2}{2}+3}{2} + \frac{4+5}{2}}{2} = \frac{27}{8}, $$

тогда как его истинное среднее равно $3$. Следовательно, отрезок $[1, 5]$ не учитывается.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.