题解 P6320 【[COCI2006-2007#4] SIBICE】
bovine__kebi · · 题解
首先我们来考虑,什么情况下火柴能放的下,是在它小于长和宽的最大值吗?其实并不是的,我们来考虑一下下面这张图:
可能不是很清晰,但是可以凑活着看,我们发现一个长方形的对角线是长于他的其他两边的,我们不妨来证明一下:
令长
则
因为平方具有非负性,所以我们能保证斜边是长于两直角边的,于是就可以愉快的敲代码了:
#include<bits/stdc++.h>
using namespace std;
int w,h;
int n;
int main()
{
scanf("%d %d %d",&n,&w,&h);//读入三个数据,分别为测试数据组数,长度和宽度
int m=sqrt(w*w+h*h);//计算对角线的长度
for(int i=1;i<=n;i++)
{
int a;
scanf("%d",&a);
puts(a<=m?"DA":"NE");//将读入的数据与对角线的长度作比较,这里用了一个三目运算符
}
return 0;
}
写在后面:
这题注意两个地方:
1.puts自带换行符
2.m要为int型,不然有可能出锅