一个三角形必然存在它的内切圆与外接圆,求他们的面积比。考虑到精度问题,我们输出面积比*1000的整数部分(直接下取整)。 输入数据是一个三角形的三个顶点,但这三个顶点在三维空间中,所以输入是9个整数,分别表示三个顶点(x1,y1,z1) (x2,y2,z2) (x3,y3,z3),保证三点不共线,每个整数在-1000,+1000范围内。 输出内接圆与外切圆的面积比*1000的整数部分。
应朋友要求,把C#版本的源码贴出:
using System;
public class Test
{
public static int ratio(int x1,int y1,int z1,int x2,int y2,int z2,int x3,int y3,int z3)
{
double a=Math.Sqrt((double)(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));
double b = Math.Sqrt((double)(x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)+(z1-z3)*(z1-z3));
double c = Math.Sqrt((double)(x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)+(z2-z3)*(z2-z3));
if(a+b==c || a==b+c || b==c+a) return 0;
double p = (a+b+c)/2;
double s=Math.Sqrt(p*(p-a)*(p-b)*(p-c));
double ri=s/p;
double ro = a*b*c/4/s;
int rat = (int)(ri/ro*ri/ro*1000);
return rat;
}
//start 提示:自动阅卷起始唯一标识,请勿删除或增加。
public static void Main()
{
Console.WriteLine(ratio(0,0,0,0,0,100,0,173,0));
}
//end //提示:自动阅卷结束唯一标识,请勿删除或增加。
}