Hướng dẫn cho Tam giác không cân
Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Authors:
Spoiler Alert
Hint 1
Tìm điều kiện tam giác và loại bỏ điều kiện để nó cân, từ đó suy ra kết quả
Hint 2
Điều kiện độ dài các cạnh: (a > 0) && (b > 0) && (c > 0)
Điều kiện để tạo tam giác: (a + b > c) && (b + c > a) && (c + a > b)
Điều kiện để tam giác cân: (a == b) || (b == c) || (c == a)
Hint 3
Điều kiện tam giác không cân: ((a > 0) && (b > 0) && (c > 0)) && ((a + b > c) && (b + c > a) && (c + a > b)) && !((a == b) || (b == c) || (c == a))
Reference AC code | \(O(1)\) time | \(O(1)\) auxiliary space | Math
C++
int main()
{
ll a, b, c;
cin >> a >> b >> c;
bool ok1 = (a > 0) && (b > 0) && (c > 0);
bool ok2 = (a + b > c) && (b + c > a) && (c + a > b);
bool ok3 = (a == b) || (b == c) || (c == a);
cout << ((ok1 && ok2 && !ok3) ? "YES" : "NO");
return 0;
}
Hint 4
Bạn cũng có thể sắp xếp các cạnh để có công thức toán học gọn hơn
Reference AC code | \(O(1)\) time | \(O(1)\) auxiliary space | Math
C++
ll max(ll a, ll b) { return a > b ? a : b; }
ll min(ll a, ll b) { return a < b ? a : b; }
ll med(ll a, ll b, ll c) { return max(min(a, b), min(c, max(a, b))); }
int main()
{
ll a, b, c;
cin >> a >> b >> c;
tie(a , b , c) = make_tuple( max(a, max(b, c)) , med(a, b, c) , min(a, min(b, c)) );
cout << ((a > b && b > c && c > 0 && b + c > a) ? "YES" : "NO");
return 0;
}
Reference AC code | \(O(1)\) time | \(O(1)\) auxiliary space | Math
C++
int main()
{
ll a, b, c;
cin >> a >> b >> c;
if (a < b) swap(a, b); if (a < c) swap(a, c); if (b < c) swap(b, c); /// sort 3 so
cout << ((a > b && b > c && c > 0 && b + c > a) ? "YES" : "NO");
return 0;
}
Bình luận
Điều kiện \((a>0)\&\&(b>0)\&\&(c>0)\) này không cần vì \((a>0)\&\&(b>0)\&\&(c>0)\) đã bao trùm lên nó
Làm sao để hiển thị box
Copy
vậy thầy OwOVâng thầy