P7471 [NOI Online 2021 入门组] 切蛋糕题解
这一道题做法是分类讨论。
假设
●
很明显,一刀都不用切,全部给
● 有且仅有
可以切两刀,分成的四份中,取两份不同的给
● 否则
切三刀。根据
容易证明,切两刀可以将蛋糕分成任意比例的两份。
对于这一段的证明如下:
设圆的面积为
由于这两道是随意切的,所以
代码如下:
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
register int x=0;
register char c=getchar();
for(;!(c>='0'&&c<='9');c=getchar());
for(;c>='0'&&c<='9';c=getchar())
x=(x<<1)+(x<<3)+c-'0';
return x;
}
int t,a[3];
int main()
{
t=read();
while(t--)
{
a[0]=read(),a[1]=read(),a[2]=read();
//读到数组里面利于排序
sort(a,a+3);
//以下是上文的分类讨论:
if(a[0]==0&&a[1]==0)
{
printf("0\n");
continue;
}
if(a[0]==0)
{
if(a[1]==a[2])
printf("1\n");
else
printf("2\n");
continue;
}
if(a[0]==a[1]||a[1]==a[2])
{
printf("2\n");
continue;
}
if(a[0]+a[1]==a[2])
{
printf("2\n");
continue;
}
printf("3\n");
}
return 0;
}