【题解】P7573

传送门

前言:一道大难题!

题意

给出 \(n\),要用最小的刀数将蛋糕分成相等的 \(n\) 份(一份中可以包含多块)。

注意:每次切蛋糕时只能沿着直径切下。

思路

  1. \(n=1\) 时答案为 \(0\)
  2. 切一刀多 \(2\) 块,则当 \(n\) 形如 \(2k\) 时至少切 \(k\) 刀;
  3. \(n=2k+1\) 时切 \(k\) 刀不够,至少切 \(k+1\)

代码

#include <iostream>
#include <cstdio>
#define int long long
using namespace std;

int t, n;

signed main()
{
	scanf("%lld", &t);
	while (t--)
	{
		scanf("%lld", &n);
		if (n == 1)
		{
			printf("0\n");
		}
		else
		{
			printf("%lld\n", (n + 1) >> 1);
		}
	}
	return 0;
}
posted @ 2021-08-07 17:48  mango09  阅读(53)  评论(0编辑  收藏  举报
-->