Hướng dẫn giải của IF17: Tứ giác
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Hướng dẫn giải
Cho tọa độ hai đỉnh đối diện của hình tứ giác có cạnh song song với trục tọa độ: đỉnh trên trái A (x, y) và đỉnh dưới phải C (u, v). Cần kiểm tra đó là hình vuông hay hình chữ nhật, và tính diện tích đường tròn tương ứng.
Cách làm
- Đọc x, y, u, v rồi tính độ dài cạnh ngang dx = |u - x| và cạnh dọc dy = |v - y|.
- Nếu dx bằng dy thì là hình vuông. In VUONG, rồi tính diện tích hình tròn nội tiếp với bán kính bằng dx chia 2.
- Ngược lại là hình chữ nhật. In CHU NHAT, rồi tính diện tích hình tròn ngoại tiếp với bán kính bằng nửa đường chéo, tức căn bậc hai của (dxdx + dydy) chia 2.
- Diện tích tính bằng 3.14 nhân bình phương bán kính, in với 2 chữ số thập phân. Lưu ý: giữ đúng công thức tính bán kính như trên và in bằng printf với %.2f.
#include <bits/stdc++.h>
using namespace std;
int main() {
// A(x, y) là đỉnh trên trái, C(u, v) là đỉnh dưới phải
long long x, y, u, v;
cin >> x >> y >> u >> v;
// Độ dài cạnh theo chiều ngang và chiều dọc
long long dx = u - x;
if (dx < 0) dx = -dx;
long long dy = v - y;
if (dy < 0) dy = -dy;
double pi = 3.14;
if (dx == dy) {
// Hình vuông: đường tròn nội tiếp có bán kính bằng nửa cạnh
double r = dx / 2.0;
double dientich = pi * r * r;
printf("VUONG\n%.2f\n", dientich);
} else {
// Hình chữ nhật: đường tròn ngoại tiếp có bán kính bằng nửa đường chéo
double r = sqrt((double)(dx * dx + dy * dy)) / 2.0;
double dientich = pi * r * r;
printf("CHU NHAT\n%.2f\n", dientich);
}
return 0;
}
Bình luận