博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj1269 Intersecting Lines
阅读量:4953 次
发布时间:2019-06-12

本文共 1366 字,大约阅读时间需要 4 分钟。

题目描述:

题解:

直线判交没啥好说的……

(不要用g++,一定要用c++)

代码:

#include
#include
#include
#include
using namespace std;const double eps = 1e-8;int dcmp(double x){ if(fabs(x)<=eps)return 0; return x>0?1:-1;}struct Point{ double x,y; Point(){} Point(double x,double y):x(x),y(y){} Point operator +(const Point&a)const{
return Point(x+a.x,y+a.y);} Point operator -(const Point&a)const{
return Point(x-a.x,y-a.y);} Point operator *(const double&a)const{
return Point(x*a,y*a);} double operator ^(const Point&a)const{
return x*a.y-y*a.x;}}a,b,c,d;typedef Point Vector;struct Line{ Point p; Vector v; Line(){} Line(Point p,Vector v):p(p),v(v){}}s1,s2;int n;void work(){ scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y,&d.x,&d.y); s1 = Line(a,b-a),s2 = Line(c,d-c); if(!dcmp(s1.v^s2.v)) { if(!dcmp(s1.v^(s2.p-s1.p)))puts("LINE"); else puts("NONE"); }else { double t = fabs(((s2.p-s1.p)^s2.v)/(s1.v^s2.v)); Point now = s1.p+s1.v*t; printf("POINT %.2lf %.2lf\n",now.x,now.y); }}int main(){ puts("INTERSECTING LINES OUTPUT"); scanf("%d",&n); while(n--)work(); puts("END OF OUTPUT"); return 0;}
View Code

 

转载于:https://www.cnblogs.com/LiGuanlin1124/p/10981489.html

你可能感兴趣的文章
ES 06 - 通过Kibana插件操作ES中的索引文档 (CRUD操作)
查看>>
1231作业
查看>>
2018-2019-2 20175204 张湲祯 实验二《Java面向对象程序设计》实验报告
查看>>
透明窗口与不规则窗口制作方法总结
查看>>
什么是“QQ登录OAuth2.0”
查看>>
WPF入门二:Hello WPF
查看>>
HackTwelve 为背景添加圆角边框
查看>>
【剑指offer】跳台阶
查看>>
Linux学习之CentOS(二十九)--Linux网卡高级命令、IP别名及多网卡绑定
查看>>
记--linux 下svn安装配置,同步web目录
查看>>
mysql 'OR','IN',‘union’效率分析
查看>>
小幻美图 API
查看>>
一个人记笔记多没意思啊,拿出来分享一下咯
查看>>
CentOS 7 Update GCC G++
查看>>
1#执行模式
查看>>
Python全栈_Day2_操作系统基础
查看>>
7.BLE---跳频原理
查看>>
对字符串做正则表达式的比较,只比较字符串,不对字符串的值进行比对
查看>>
深入浅出学习Struts框架(三):彻底去掉TestServlet中的字符串和if-else语句块
查看>>
CodeForces 405A 手速题
查看>>