
题目链接:https://vjudge.net/contest/121192#problem/L
这是一道很有意思的题,就是给定一个以原点为圆心的圆,然后给定 一个点 求最大三角的 其他的坐标 ,很容易知道这个三角形一定是等边三角形,所以圆心就是三角形的重心,刚开始用直线的方程来写,还要解一个复杂的一元二次方程,十分复杂,后来又想到一种简单的方法
这样就可以得到一个点的坐标 又重心为圆点 则三点的横坐标之和为0 总坐标之和为0
ac代码:
import java.io.BufferedInputStream;
import java.text.DecimalFormat;
import java.util.Scanner; public class Main {
public static void main(String[] args) {
DecimalFormat format = new DecimalFormat("0.000");
Scanner s = new Scanner(new BufferedInputStream(System.in));
int t = s.nextInt();double x,y,x1,y1,x2,y2, c,r,a,b,d;
while(t-->){
x = s.nextDouble();y = s.nextDouble();
r=Math.sqrt(x*x+y*y);
a=r*r;
b=r*r*y;
c=r*r*r*r/-x*x*r*r;
d=b*b-*a*c;
y1=(-*b-Math.sqrt(d))/(*a);
y2=(-*b+Math.sqrt(d))/(*a);
if(x==)
{
x1=-Math.sqrt(r*r-y1*y1);
x2=Math.sqrt(r*r-y2*y2);
}
else
{
x1=(-*r*r/-y*y1)/x;
x2=(-*r*r/-y*y2)/x;
}
System.out.println(format.format(x1)+" "+format.format(y1)+" "+format.format(x2)+" "+format.format(y2));
}
s.close();
}
}