我是怎么WA了6次的?
我们可以设三个圆的半径分别为X、Y、Z,原三角形的三边分别记为a、b、c,据两圆外切的性质(圆心距等于半径和):
x+y=a;y+z=b;z+x=c
解这个方程组就可求出三个圆的半径。(已知三角形三边的条件下)
x=(a+b-c)/2,y=(a+c-b)/2;z=(b+c-a)/2;
也就是说:只要是个三角形,都可以的,不存在“No"的输出
#include<bits/stdc++.h> using namespace std; long long int a,b,c; double x,y,z; int main(){ scanf("%lld%lld%lld",&a,&b,&c); if((a+b)<=c || (a+c)<=b || (b+c)<=a) printf("wtnl"); else{ x=(a+b-c)/2.0; y=(a+c-b)/2.0; z=(b+c-a)/2.0;//错解:/2(精度缺失) if(x>y) swap(x,y); if(x>z) swap(x,z); if(y>z) swap(y,z); printf("Yes\n");//错解:YES printf("%.2lf %.2lf %.2lf",x,y,z);//错解:没有空格 } return 0; }