链接:https://ac.nowcoder.com/acm/contest/553/A
来源:牛客网
题目描述
Chino的数学很差,因此Cocoa非常担心。这一天,Cocoa准备教Chino学习圆与直线的位置关系。
众所周知,直线和圆有三种位置关系:相离、相切、相割,主要根据圆心到直线的距离来判定。
现在我们来看看作业吧:
是以整点为圆心、正整数为半径的圆,整点分别是圆外一点以及轴上的一点,形成一条圆的割线(也就是和圆有两个交点)。现在Cocoa想要知道,的值是多少?
题目对于Chino来说太难啦,你能帮一帮Chino吗?
输入描述:
六个正整数x0, y0, r, x1, y1, y2
输出描述:
题目要求的答案,精确到整数
示例1
输入
复制
2 2 1 3 1 2
输出
复制
1
应用常规解法就是通过直线与圆的方程联立然后进行运算求解,但是这样的话最后要求保留整数,但是我用的是double类型进行运算,最后精度不够,后面想了一下在不违背题目的意思上因为 b是个定点然后就可以通过相切直接求解 具体代码如下
import java.util.Scanner;
/**
* Created by taoqianlixiaolang on 2019/4/9.
*/
public class Main {
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
long x0=sc.nextInt();
long y0=sc.nextInt();
//圆半径 r
long r=sc.nextInt();
//b点坐标 x1,y1
long x1=sc.nextInt();
long y1=sc.nextInt();
//c 点坐标 x2=0 y2;
long y2=sc.nextInt();
// int theend=(int)(Math.pow(x1-x0,2)+Math.pow(y1-y0,2)-r*r);
long theend=(x1-x0)*(x1-x0)+(y1-y0)*(y1-y0)-r*r;
System.out.println(theend);
}
}
。