K.小沙的抱团easy
K.小沙的抱团easy
题目描述
小沙在玩一个抱团游戏,最开始有 n 个人,每次小沙会下达一次指令,要求以 x 人为单位抱团,每个人只能在一个团里,若一个人不属于某一个恰好 x 个人的团则将被淘汰,抱团需要所有参与抱团的人全部同意。假设参加游戏的人都足够聪明,都希望自己不被淘汰。如果你是小沙,你最少需要多少次指令才能使得剩余的人数最少。
每次要求拥抱人数不能超过当前人数,且每次拥抱人数均为正整数。例:剩余 5 人时不能要求 6 个人拥抱在一起,也不能要求 4.5个人拥抱在一起(怪)。
输入描述:
第一行输入一个整数 n ,\(1 \le n \le 10^{18}\)。
输出描述:
输出一个整数代表小沙最少需要的指令次数。
输入
5
输出
2
说明
第一次可以下达指令 3 ,最后会存活 3 个人,随后下达指令 2 ,最后存活 2 人。可以发现无论如何,人数都不能再少。
思路点拨:
- 签到题,贪心,每次除以2然后+1即可。
提交代码
#include <bits/stdc++.h>
using i64 = long long;
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
i64 n;
std::cin >> n;
int ans = 0;
while (n > 2)
{
n = n / 2 + 1;
ans++;
}
std::cout << ans << "\n";
return 0;
}

浙公网安备 33010602011771号