题意
给你四个木棍的长度,问你这四根木棍能不能组成一个四边形。
思路
四边形成立的条件比较简单,就是任意三边之和大于第四边。
但是这道题目有两个坑。
一是输入的四条边中可能会出现长度为0的边。
二是四个数据都比较大,直接加减都容易爆long long。我的解决方案是使用unsighed long long,sort后判断a[0]+a[1] < a[2] + a[3]。
AC代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <set> 6 #include <map> 7 using namespace std; 8 unsigned long long a[6]; 9 int main() 10 { 11 int t; 12 scanf("%d",&t); 13 while(t--){ 14 scanf("%I64u%I64u%I64u%I64u",&a[0],&a[1],&a[2],&a[3]); 15 sort(a,a+4); 16 17 if(a[0]>0 && a[0]+a[1]>a[3]-a[2]){ 18 printf("Yes "); 19 }else{ 20 printf("No "); 21 } 22 23 } 24 return 0; 25 }