Collision (hdu-5114
题意:你有一个以(0, 0), (x, 0), (0, y), (x, y)为边界点的四边形,给你两个点从(x1, y1), (x2, y2)的点发射,以(1, 1)的速度走,碰到边界会反射,问你最终两个点在什么地方相遇。
分析:点有三种情况
A.两点重合
直接输出坐标
B.只有x轴或者y轴相等。
以y轴相等,x1>x2为例。当他们重合时X=n-(x1+t-n), X=x2+t。此时求出t=n-(x1+x2)/2,知道t后,很容易就知道答案。
C.x轴y轴都不相等
其实可以知道x轴相遇的话是以n为周期,y轴相遇是以m为周期<其实我不知道,后面看了他们的我才知道>。
t = n-(x1+x2)/2+a*n
t = m-(y1+y2)/2+b*m
那么用扩展欧几里得就可以求出来了。
ll n, m; ll e_gcd(ll a,ll b,ll &x,ll &y) {
if(b==)
{
x=;
y=;
return a;
}
ll ans=e_gcd(b,a%b,x,y);
ll temp=x;
x=y;
y=temp-a/b*y;
return ans;
} void solve() {
scanf("%lld%lld", &n, &m);
ll x1, x2, y1, y2;
scanf("%lld%lld%lld%lld", &x1, &y1, &x2, &y2);
n*=, m*=, x1*=, y1*=, x2*=, y2*=;
ll tim=-;
ll ta = n-(x1+x2)/, tb = m-(y1+y2)/;
if (x1==x2&&y1==y2) {
tim = ;
}
if (x1==x2&&y1!=y2) {
tim = tb;
}
if (x1!=x2&&y1==y2) {
tim = ta;
}
if (x1!=x2&&y1!=y2) {
ll x, y;
ll d=e_gcd(n, m, x, y);
if ((tb-ta)%d==) {
x = (tb-ta)/d*x;
x = (x%(m/d)+m/d)%(m/d);
tim = ta+x*n;
}
}
if (tim==-) {
printf("Collision will not happen.\n");
}
else {
ll x=(x1+tim)%(*n), y=(y1+tim)%(*m);
if (x>n) x = *n-x;
if (y>m) y = *m-y;
printf("%.1f %.1f\n", x/2.0, y/2.0);
}
}
int main() {
int t=;
//freopen("in.txt", "r", stdin);
scanf("%d", &t);
for (int T=; T<=t; T++) {
printf("Case #%d:\n", T);
solve();
}
return ;
}
Collision (hdu-5114的更多相关文章
- HDU 5114 Collision
Collision Time Limit: 15000/15000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Total ...
- 数学(扩展欧几里得算法):HDU 5114 Collision
Matt is playing a naive computer game with his deeply loved pure girl. The playground is a rectangle ...
- HDU 5114 扩展欧几里得
题目大意:给你两个球的坐标 他们都往(1, 1)这个方向以相同的速度走,问你他们在哪个位置碰撞. 思路:这种题目需要把x方向和y方向分开来算周期,两个不同周期需要用扩展欧几里得来求第一次相遇. #in ...
- 2013 ACM区域赛长沙 C Collision HDU 4793
题意:在平面上0,0点,有一个半径为R的圆形区域,并且在0,0点固定着一个半径为RM(<R)的圆形障碍物,现在圆形区域外x,y,有一个半径 为r的,并且速度为vx,vy的硬币,如果硬币碰到了障碍 ...
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C.Ray Tracing (模拟或扩展欧几里得)
http://codeforces.com/contest/724/problem/C 题目大意: 在一个n*m的盒子里,从(0,0)射出一条每秒位移为(1,1)的射线,遵从反射定律,给出k个点,求射 ...
- 2014ACM/ICPC亚洲区北京站题解
本题解不包括个人觉得太水的题(J题本人偷懒没做). 个人觉得这场其实HDU-5116要比HDU-5118难,不过赛场情况似乎不是这样.怀疑是因为老司机带错了路. 这套题,个人感觉动态规划和数论是两个主 ...
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C. Ray Tracing 数学
C. Ray Tracing 题目连接: http://codeforces.com/contest/724/problem/C Description oThere are k sensors lo ...
- HDU 4793 Collision(2013长沙区域赛现场赛C题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4793 解题报告:在一个平面上有一个圆形medal,半径为Rm,圆心为(0,0),同时有一个圆形范围圆心 ...
- HDU 4793 Collision (2013长沙现场赛,简单计算几何)
Collision Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU 4793 Collision (解二元一次方程) -2013 ICPC长沙赛区现场赛
题目链接 题目大意 :有一个圆硬币半径为r,初始位置为x,y,速度矢量为vx,vy,有一个圆形区域(圆心在原点)半径为R,还有一个圆盘(圆心在原点)半径为Rm (Rm < R),圆盘固定不动,硬 ...
随机推荐
- C++Primer第五版——习题答案详解(十一)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第12章 动态内存 练习12.1 b1包含4个元素,b2被销毁 练习12.2 #incl ...
- python之路——11
王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 学习内容 一.装饰器 1.时间模块 time.time time.sleep 2.装饰器 原则---开放封闭 ...
- Centos7.5 安装高版本Cmake 3.6.2
下载Cmake wget https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz 解压Cmake tar xvf cmake-3.6.2.tar.gz & ...
- SAS LOGISTIC 逻辑回归中加(EVENT='1')和不加(EVENT='1')区别
区别在于:最大似然估计分析中估计是刚好正负对调加上EVENT:%LET DVVAR = Y;%LET LOGIT_IN = S.T3;%LET LOGIT_MODEL = S.Model_Params ...
- 谷歌浏览器内核Cef js代码整理(三) 字符串处理
*字符串截取方法*/ var s="abc_def[ghi]jk[i]"; var temp;function CopyFromStr(str_source,str_key, bl ...
- vue+窗格切换+田字+dicom显示_03
环境:vue+webpack+cornerstone ide:vs code 需求:窗格设置+拼图设置 代码: 主体:printPage.vue <div class="div mid ...
- JS-Promise笔记
转自:http://www.runoob.com/w3cnote/javascript-promise-object.html ECMAscript 6 原生提供了 Promise 对象. Promi ...
- ORA-03137: TTC 协议内部错误: [12333] [4] [49] [51] [] [] [] []
[1]问题背景:Oracle数据库版本为11.2.0.1,操作系统CentOS release 5.9,详细的报错信息如下: Dump file /data/oracle/diag/rdbms/db0 ...
- nginx gunicorn 部署flask,带参数链接不可用的现象(笔记)
微信小程序后台,开启 gunicorn之后屏幕会输出打印结果,一旦关闭shell 带参数链接不可用,只有开启shell才能使用, 一针见血 : 注释掉所有print语句,关闭shell 带参数的链接 ...
- leetcode226
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...