2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛) A Chino with Geometry
2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛) A Chino with Geometry
链接:
题目描述
Chino的数学很差,因此Cocoa非常担心。这一天,Cocoa准备教Chino学习圆与直线的位置关系。 众所周知,直线和圆有三种位置关系:相离、相切、相割,主要根据圆心到直
2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛) A Chino with Geometry
链接:
Chino的数学很差,因此Cocoa非常担心。这一天,Cocoa准备教Chino学习圆与直线的位置关系。
众所周知,直线和圆有三种位置关系:相离、相切、相割,主要根据圆心到直线的距离来判定。
现在我们来看看作业吧:
是以整点为圆心、正整数为半径的圆,整点分别是圆外一点以及轴上的一点,形成一条圆的割线(也就是和圆有两个交点)。现在Cocoa想要知道,的值是多少?
题目对于Chino来说太难啦,你能帮一帮Chino吗?
六个正整数x0, y0, r, x1, y1, y2
题目要求的答案,精确到整数
示例1
复制
2 2 1 1 2
复制
1
一开始想的是求出直线与圆的交点的两个坐标,然后直接算出|BD|和|BE|的长度。
这样做需要求出直线和圆的方程然后联立解二元一次方程。
这里参考的另一个博主的给出的方法求得。
链接如下:
求圆和直线相交的两个交点的坐标
#include <bits/stdc.h>
using namespace std;
double x00,y00,r,x11,y11,x22,y22;
double k,b;
double x,y,x44,y44;
double aa,bb,cc;
double re;
double ans;
//求y=kxb中的k和b
void solkb()
{b=y22;k=(y11-y22)/x11;
}
//求圆和直线联立的axbyc=0中的a,b,c
void solabc()
{aa=1k*k;bb=2*k*(b-y00)-2*x00;cc=x00*x00(b-y00)*(b-y00)-r*r;
}
//解二元一次方程
void solxy4()
{re=bb*bb-4*aa*cc;x=(-bbsqrt(re))/(2*aa);x44=(-bb-sqrt(re))/(2*aa);y=k*xb;y44=k*x44b;
}
//根据坐标系求距离
void solve()
{double a1=fabs(y-y11);double b1=fabs(x11-x);double r1=sqrt(a1*a1b1*b1);double a2=fabs(y44-y11);double b2=fabs(x11-x44);double r2=sqrt(a2*a2b2*b2);ans=r1*r2;
}
int main()
{x22=0;scanf(%lf%lf%lf%lf%lf%lf,&x00,&y00,&r,&x11,&y11,&y22);solkb();solabc();solxy4();solve();printf(%.0lf\n,ans);return 0;
}
通过看排名大佬提交的代码,发现还有一种更简便的方法:
直接用B到O的距离的平方减去半径的平方就是答案。。。感觉我高中的时候应该知道为什么。。
#include<bits/stdc.h>
using namespace std;
typedef long long ll;
int main(){int x0,y0,r,x1,y1,y2;while(EOF!=scanf(%d%d%d%d%d%d,&x0,&y0,&r,&x1,&y1,&y2)){ll a=1ll*(x1-x0)*(x1-x0)1ll*(y1-y0)*(y1-y0);double ans=a-1ll*r*r;printf(%.0lf\n,ans);}return 0;
}
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2024-04-17 07:12:28
上一篇:加强版bindinglist
推荐阅读
留言与评论(共有 19 条评论) |
本站网友 晶石传说 | 17分钟前 发表 |
y11 | |
本站网友 内幕交易 | 16分钟前 发表 |
ans);}return 0; } | |
本站网友 医药资讯网 | 16分钟前 发表 |
cc; double re; double ans; //求y=kxb中的k和b void solkb() {b=y22;k=(y11-y22)/x11; } //求圆和直线联立的axbyc=0中的a | |
本站网友 长期投资 | 16分钟前 发表 |
&x0 | |
本站网友 孟雨菲 | 28分钟前 发表 |
y1 | |
本站网友 百度提取码 | 8分钟前 发表 |
&y22);solkb();solabc();solxy4();solve();printf(%.0lf\n | |
本站网友 刚需 | 19分钟前 发表 |
y1 | |
本站网友 大副的帽子 | 3分钟前 发表 |
x1 | |
本站网友 万福家园 | 24分钟前 发表 |
x1 | |
本站网友 wna1100驱动 | 19分钟前 发表 |
y | |
本站网友 招商公园1872 | 10分钟前 发表 |
&r | |
本站网友 ca422 | 9分钟前 发表 |
y22; double k | |
本站网友 床虱 | 8分钟前 发表 |
y44; double aa | |
本站网友 治本 | 12分钟前 发表 |
相切 | |
本站网友 减肥食谱网 | 12分钟前 发表 |
&y00 | |
本站网友 新香洲租房 | 5分钟前 发表 |
&y11 | |
本站网友 北京脑瘫医院 | 26分钟前 发表 |
y2 输出描述 | |
本站网友 临邑房屋出租 | 23分钟前 发表 |
x11 |