CF979A Pizza, Pizza, Pizza!!! 题解

Content

小 S 想把一块披萨切成大小、形状都相同的 \((n+1)\) 块(\(n\) 块分给 TA 的 \(n\) 个朋友,还有一块留给自己),试问最小需要切多少块。

数据范围:\(0\leqslant n\leqslant 10^{18}\)。

Solution

首先这道题目坑的一点就是 \(n\) 可能等于 \(0\),这时候不需要再切了,答案是 \(0\)。

然后看 \(n\neq 0\) 的情况。

首先是 \(2\mid (n+1)\) 的情况,那么我们可以发现有两次可以当一次切,可以求得需要切的次数为 \(\dfrac{n+1}{2}\)。然后是 \(2\nmid (n+1)\),那么没法再将多次当一次切了,那么需要且的次数就是 \((n+1)\)。

Code

ll n, ans;

int main() {
	getll(n);
	writell(ans = (!n ? 0 : (((n + 1) % 2) ? n + 1 : (n + 1) / 2)));
	return 0;
}
上一篇:Qt打造一款属于自己的播放器


下一篇:面向对象设计原则总结