A49409.多重背包二进制优化问题

普及-

官方

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

给定一个正整数 nn,你需要选择一个数字集合 SS,满足以下条件:

  1. 对于任意整数 xx1xn1 \leq x \leq n),xx 都可以表示为 SS 中若干数字的和(每个数字最多使用一次);

  2. 不能表示任何大于 nn 的整数。

求集合 SS 的最小可能大小。

数据范围\large{数据范围}

  • 1T1061 \leq T \leq 10^6
  • 1n1091 \leq n \leq 10^9

输入格式

第一行输入一个整数 TT,代表测试样例数目。

接下来 TT 行,每一行输入一个整数 nn

输出格式

对于每一个测试用例,输出一个整数占一行表示答案。

输入输出样例

  • 输入#1

    32
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32

    输出#1

    1
    2
    2
    3
    3
    3
    3
    4
    4
    4
    4
    4
    4
    4
    4
    5
    5
    5
    5
    5
    5
    5
    5
    5
    5
    5
    5
    5
    5
    5
    5
    6
    

说明/提示

样例解释:

n=1n = 1 的时候,只需要 11,就能表示出来。

n=2n = 2 的时候,只需要 1,11, 1, 就能表示 1122 的所有数。

n=3n = 3 的时候,只需要 1,21, 2, 就能表示 1133 的所有数。

n=4n = 4 的时候,只需要 1,2,11, 2, 1, 就能表示 1144 的所有数。

n=5n = 5 的时候,只需要 1,2,21, 2, 2, 就能表示 1155 的所有数。

n=6n = 6 的时候,只需要 1,2,31, 2, 3, 就能表示 1166 的所有数。

n=7n = 7 的时候,只需要 1,2,41, 2, 4, 就能表示 1177 的所有数。

n=8n = 8 的时候,只需要 1,2,4,11, 2, 4, 1, 就能表示 1188 的所有数。

......

首页