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;
}

最新文章

  1. Python小游戏之猜数字
  2. PHP+MySql例子
  3. leetcode 6
  4. GridView 鼠标经过时变色两种方法
  5. ipc telnet 攻击
  6. 一个php类 Autoloader
  7. 第3章 Struts2框架--2、完整的Struts2框架应用实例
  8. java学习面向对象值static
  9. win2k,XP下用setupapi.dll自动安装Driver
  10. Servlet.service() for Servlet jsp threw exception javax.servlet.ServletException:File "/pageFoo
  11. css transition 实现滑入滑出
  12. vscode 最新中文设置
  13. Linux驱动之平台设备驱动模型简析(驱动分离分层概念的建立)
  14. Ubuntu中在服务器和本机之间传递文件
  15. 收藏的blog
  16. 路径打印(set以及字符串的相关操作)
  17. collection tree protocol
  18. 基于Map的简易记忆化缓存
  19. HTML5中的Web Storage(sessionStorage||localStorage)理解与简单实例
  20. [Re:从零开始的分布式] 0.x——Reids实现分布式锁

热门文章

  1. c语言if语句是如何变成汇编代码的?
  2. 【Java面试】-- 杂题
  3. 【Linux】(1)安装
  4. Java编程之学习技巧
  5. Pickle的简单用法
  6. dotnet 将自动代码格式化机器人带入团队 GitLab 平台
  7. go定义接口以及类怎么使用接口
  8. C语言 序列反向互补函数
  9. Java 读取TXT文件的多种方式
  10. matplotlib以对象方式绘制子图