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