P7573题解

· · 题解

我们想一想:

切1刀分成2块

切2刀分成4块

切3刀分成6块

......

很显然,如果切 k 刀,整个蛋糕会分成 2k

所以,对于任意偶数 n = 2k 那么只需要 k

而对于任意奇数 2k + 1 ,我们其实需要 k + 1

所以,对于任意正整数 n ,我们需要切 \left\lceil\dfrac{n}{2}\right\rceil

但是,这里有一个特例:

所以,加一个特判就是本题正解:

#include <bits/stdc++.h>
using namespace std;

int t,n;

int main()
{
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        if(n == 1)
            putchar('0'),putchar('\n');
        else printf("%d\n",(n + 1) >> 1);
    }
    return 0;
}