Description

题目描述

Alice、Bob 和 Cindy 三个好朋友得到了一个圆形蛋糕,他们打算分享这个蛋糕。

三个人的需求量分别为 \(a, b, c\),现在请你帮他们切蛋糕,规则如下:

  1. 每次切蛋糕可以选择蛋糕的任意一条直径,并沿这条直径切一刀(注意切完后不会立刻将蛋糕分成两部分)。
  2. 设你一共切了 \(n\) 刀,那么你将得到 \(2n\) 个扇形的蛋糕(特别地,切了 \(0\) 刀被认为是有一个扇形,即整个圆形蛋糕),将这些蛋糕分配给 Alice,Bob 和 Cindy,要求每个扇形蛋糕只能完整地分给一个人。
  3. 三人分到的蛋糕面积比需要为 \(a, b, c\)(不保证是最简比例,且如果 \(a, b, c\) 中某个数为 \(0\),表示那个人不吃蛋糕)。

为了完成这个任务,你至少需要切几刀?

输入格式

本题单个测试点包含多组数据。

第一行包含一个整数 \(T\),表示数据组数。

接下来 \(T\) 行,每行包含三个整数 \(a, b, c\),表示三人的需求量。

输出格式

输出 \(T\) 行,第 \(i\) 行的输出表示第 \(i\) 组数据中你至少需要切蛋糕的次数。

Solution

显然的,\(2\) 刀可以分出任意比例的蛋糕(\(a, b, c\) 的比例分别是 \(\dfrac{a}{a + b + c},\dfrac{b}{a + b + c},\dfrac{c}{a + b + c}\)),所以给 \(3\) 个人分蛋糕最多只需要 \(2 \times 3 = 6\) 刀。但注意,这 \(6\) 刀中有 \(3\) 刀必然是可以重合的,所以最多只需要 \(6 - 3 = 3\) 刀。

以下约定答案为 \(s\)。

现在来进行分类讨论:

首先将 \(a, b, c\) 排序,使 \(a \leq b \leq c\)。

  • 如果 \(a = 0\)

    • 如果 \(b = 0\),\(s = 0\)
    • 如果 \(b = c\),\(s = 1\)
    • 否则 \(s = 2\)
  • 如果 \(a \neq 0\),说明 \(a, b, c\) 三值都是非零的

    • 如果 \(a + b = c\) 或 \(a = b\) 或 \(b = c\),\(s = 2\)
    • 否则 \(s = 3\)

Code

#include <bits/stdc++.h>

void solve()
{
int a[3];
int answer; for (int i = 0; i < 3; i++)
{
scanf("%d", &a[i]);
} std::sort(a, a + 3); if (a[0] == 0)
{
if (a[1] == 0) { answer = 0; }
else
{
if (a[1] == a[2]) { answer = 1; }
else { answer = 2; }
}
}
else
{
if (a[0] + a[1] == a[2] || a[0] == a[1] || a[1] == a[2]) { answer = 2; }
else { answer = 3; }
} printf("%d\n", answer); return;
} int main()
{
int tests; scanf("%d", &tests); while (tests--)
{
solve();
} return 0;
}

最新文章

  1. 中文字符匹配js正则表达式
  2. merge 本地 master 分支代码提示 “Already up-to-date”
  3. gridview的行选择的一个问题
  4. 项目常用jquery/easyui函数小结
  5. 主机找不到vmnet1和vmnet8
  6. Linux中Oracle数据库备份还原
  7. 蓝桥杯—盾神与条状项链(C++实现)
  8. java的克隆
  9. 【Mysql知识补充】
  10. 在weblogic上部署遇到的问题总结
  11. vue 源码学习(一) 目录结构和构建过程简介
  12. layui加载层
  13. js常用身份校验规则
  14. Django admin 自定义Choice_field
  15. Hype cycle(Gartner 成熟度曲线)
  16. UVAlive6800The Mountain of Gold?(负环)
  17. 菜鸟级渣渣 关于MAC系统开发java的吐槽
  18. PHP学习笔记之析构函数以及static,self,parent关键字
  19. gdb调试带参数程序
  20. python语言特性总结

热门文章

  1. centos 各版本下载
  2. [Git]解决Permission denied, please try again问题
  3. [Error]ValueError: Object arrays cannot be loaded when allow_pickle=False
  4. CS5202Capstone|CS5202芯片|CS5202芯片方案
  5. Mysql 设计超市经营管理系统,包括员工信息表(employee)和 员工部门表(department)
  6. windows环境下node安装教程(超详细)
  7. Ranger-Solr审计日志安装
  8. ANT 通配符使用说明
  9. Appium服务器初始化参数(Capability)
  10. js 模块化 -- export 时 一个默认和多个默认的写法