2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛) A Chino with Geometry

链接: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);
    }
 
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值