#CF2020B. 亮度开始
亮度开始
B. 亮度开始
每个测试的时间限制:1 秒
内存限制:256 兆字节
题目描述
假设你有 个灯泡,编号为 。初始时,所有灯泡都亮着。翻转一个灯泡的状态是指:如果它原来是亮的,就把它关掉;如果它原来是关的,就把它打开。
接下来,你执行以下操作:
对于每个 ,翻转所有编号 满足 能被 整除的灯泡的状态。
执行完所有操作后,会有一些灯泡仍然亮着。你的目标是让这个亮着的灯泡数量恰好等于 。
找出最小的合适的 ,使得执行完操作后恰好有 个灯泡亮着。可以证明答案总是存在的。
输入格式
每个测试点包含多个测试用例。第一行包含测试用例的数量 ()。接下来是每个测试用例的描述。
每个测试用例只有一行,包含一个整数 ()。
输出格式
对于每个测试用例,输出 —— 所需的最小灯泡数量。
输入样例
3
1
3
8
输出样例
2
5
11
样例解释
第一个测试用例:最小灯泡数量为 。我们用数组表示所有灯泡的状态,其中 表示亮着的灯泡, 表示关掉的灯泡。
- 初始状态:
- 执行 的操作后,数组变为
- 执行 的操作后,数组变为
最终有 个灯泡亮着。可以证明答案不能小于 。
第二个测试用例:最小灯泡数量为 。
- 初始状态:
- 执行 的操作后,数组变为 $[\underline{0}, \underline{0}, \underline{0}, \underline{0}, \underline{0}]$
- 执行 的操作后,数组变为
- 执行 的操作后,数组变为
- 执行 的操作后,数组变为
- 执行 的操作后,数组变为
最终有 个灯泡亮着。可以证明答案不能小于 。