列表

详情


NC23871. Chino with Geometry

描述

Chino的数学很差,因此Cocoa非常担心。这一天,Cocoa准备教Chino学习圆与直线的位置关系。
众所周知,直线和圆有三种位置关系:相离、相切、相割,主要根据圆心到直线的距离来判定。

现在我们来看看作业吧:

是以整点为圆心、正整数为半径的圆,整点分别是圆外一点以及轴上的一点,形成一条圆的割线(也就是和圆有两个交点)。现在Cocoa想要知道,的值是多少?
题目对于Chino来说太难啦,你能帮一帮Chino吗?

输入描述

六个正整数x0, y0, r, x1, y1, y2

输出描述

题目要求的答案,精确到整数

示例1

输入:

2 2 1 3 1 2

输出:

1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang 3.9) 解法, 执行用时: 3ms, 内存消耗: 352K, 提交时间: 2019-04-06 13:23:09

#include<stdio.h>
int main()
{
	long long a,b,c,d,e,f,g,h,i,j;
	scanf("%ld%ld%ld%ld%ld%ld",&a,&b,&c,&d,&e,&f);
	g=a-d;
	h=b-e;
	g=g*g;
	g=g+h*h;
	g=g-c*c;
	printf("%lld",g);
}

Python3(3.5.2) 解法, 执行用时: 36ms, 内存消耗: 3404K, 提交时间: 2019-04-06 13:22:09

while True:
    try:
        x0,y0,r,x1,y1,y2=map(int,input().split())
        res=int(((x0-x1)**2+(y0-y1)**2-r*r)+0.5)
        print(res)
    except:
        break

C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 356K, 提交时间: 2019-04-10 21:21:03

#include<iostream>
int main()
{
    long long x0,y0,r,x1,y1,y2;
    return std::cin>>x0>>y0>>r>>x1>>y1>>y2,std::cout<<(y0-y1)*(y0-y1)+(x0-x1)*(x0-x1)-r*r,0;
}

C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 480K, 提交时间: 2019-04-10 20:16:29

#include<iostream>
int main()
{
	long long x0,y0,r,x1,y1,y2;
	return std::cin>>x0>>y0>>r>>x1>>y1>>y2,std::cout<<(y0-y1)*(y0-y1)+(x0-x1)*(x0-x1)-r*r,0;
}

上一题