CF773C.Prairie Partition

提高+/省选-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

It can be shown that any positive integer x can be uniquely represented as x = 1 + 2 + 4 + ... + 2_k_ - 1 + r, where k and r are integers, k ≥ 0, 0 < r ≤ 2_k_. Let's call that representation prairie partition of x.

For example, the prairie partitions of 12, 17, 7 and 1 are:

12 = 1 + 2 + 4 + 5,

17 = 1 + 2 + 4 + 8 + 2,

7 = 1 + 2 + 4,

1 = 1.

Alice took a sequence of positive integers (possibly with repeating elements), replaced every element with the sequence of summands in its prairie partition, arranged the resulting numbers in non-decreasing order and gave them to Borys. Now Borys wonders how many elements Alice's original sequence could contain. Find all possible options!

可以证明,任意正整数 xx 都能被唯一表示为

x=1+2+4+⋯+2k−1+r,x = 1 + 2 + 4 + \dots + 2^{k-1} + r,

其中 kk 和 rr 为整数,满足 k≥0k \geq 0 且 0<r≤2k0 < r \leq 2^k。我们称该表示为 xx 的草原划分(prairie partition)。

例如,1212、1717、77 和 11 的草原划分如下:

  • 12=1+2+4+512 = 1 + 2 + 4 + 5,
  • 17=1+2+4+8+217 = 1 + 2 + 4 + 8 + 2,
  • 7=1+2+47 = 1 + 2 + 4,
  • 1=11 = 1。

Alice 取了一个正整数序列(元素可能重复),将其中每个元素替换为其草原划分中的所有加数,再将所有得到的数按非递减顺序排列后交给了 Borys。现在 Borys 想知道:Alice 原来的序列可能包含多少个元素?请找出所有可能的取值!

输入格式

The first line contains a single integer n (1 ≤ n ≤ 105) — the number of numbers given from Alice to Borys.

The second line contains n integers _a_1, _a_2, ..., a__n (1 ≤ a__i ≤ 1012; _a_1 ≤ _a_2 ≤ ... ≤ a__n) — the numbers given from Alice to Borys.

第一行包含一个整数 nn(1≤n≤1051 \leq n \leq 10^5)—— Alice 给 Borys 的数字个数。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤10121 \leq a_i \leq 10^{12};且 a1≤a2≤⋯≤ana_1 \leq a_2 \leq \dots \leq a_n)—— Alice 给 Borys 的数字。

输出格式

Output, in increasing order, all possible values of m such that there exists a sequence of positive integers of length m such that if you replace every element with the summands in its prairie partition and arrange the resulting numbers in non-decreasing order, you will get the sequence given in the input.

If there are no such values of m, output a single integer -1.

按升序输出所有可能的 $ m $ 值,使得存在一个长度为 $ m $ 的正整数序列,满足:将该序列中每个元素替换为其“草原划分”(prairie partition)中的各项加数,并将所有得到的数按非递减顺序排列后,恰好等于输入中给出的序列。

若不存在满足条件的 $ m $ 值,则输出单个整数 −1-1。

输入输出样例

  • 输入#1

    8
    1 1 2 2 3 4 5 8

    输出#1

    2
  • 输入#2

    6
    1 1 1 2 2 2

    输出#2

    2 3
  • 输入#3

    5
    1 2 4 4 4

    输出#3

    -1

说明/提示

In the first example, Alice could get the input sequence from [6, 20] as the original sequence.

In the second example, Alice's original sequence could be either [4, 5] or [3, 3, 3].

在第一个例子中,Alice 可以将 [6, 20][6, 20] 作为原始序列得到该输入序列。

在第二个例子中,Alice 的原始序列可以是 [4, 5][4, 5] 或 [3, 3, 3][3, 3, 3]。

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

首页