链接:https://ac.nowcoder.com/acm/contest/3007/J
题目描述
现有一个边长为正整数的三角形,问能否以其三个顶点为圆心画三个圆,使三个圆两两外切
三边长均不超过
思路
首先判断是否是三角形,两边之差小于第三边或者之和大于第三边都行,然后假设可以相切,三个边长分别为,那么就有,可以求出来三个半径,如果三个半径有小于等于0的,就不可行,否则可行
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if (abs(a - b) >= c || abs(a - c) >= b || abs(b - c) >= a){
printf("wtnl\n");
return 0;
}
double x, y, z;
x = a;
y = b;
z = c;
double r1, r2, r3;
r1 = x + y - z;
r2 = x + z - y;
r3 = y + z - x;
r1 /= 2;
r2 /= 2;
r3 /= 2;
if (r1 > 0 && r2 > 0 && r3 > 0){
if (r1 > r2)swap(r1, r2);
if (r1 > r3)swap(r1, r3);
if (r2 > r3)swap(r2, r3);
printf("Yes\n%.2lf %.2lf %.2lf\n", r1, r2, r3);
}
else printf("No\n");
return 0;
}