Kick Ass Biu
来源:互联网 发布:日本网络电视jitakutv 编辑:程序博客网 时间:2024/06/05 20:10
点击打开链接
在玩Kick Ass的时候,可以发现子弹的发射与飞船的移动非常有趣。
假设屏幕是个n
,水平为m
)的矩形,以矩形左下角为原点,水平方向为x
轴,向右为正方向,竖直方向为y
轴,像上为正方向,建立平面直角坐标系。你的飞船在(x1,y1)
点,射击目标在(x2,y2)
,你向目标发出了一发子弹,然而由于网页卡顿,这枚子弹并不会触碰到目标。所以,子弹将以每秒v
单位的速度继续前进,若子弹移动到屏幕边缘,将自动传送到另一边并继续移动。如:向右移动到(m,0)
则下一刻从(0,0)
开始继续移动,同理向上移动到(0,n)
则下一刻从(0,0)
开始继续移动。
现在给出n
、m
、(x1,y1)
、(x2,y2)
、v
,能否通过编程回答第t
秒子弹的坐标?
输入
多组测试数据,请处理到文件结束。
第一行是两个正整数n
,m
第二行是六个正整数x1
,y1
,x2
,y2
,v
,t
输出
对于每组测试数据请在一行输出第t
秒子弹的坐标x
,y
,中间用一个空格隔开。
结果四舍五入保留到小数点后一位
样例输入
3 31 1 1 2 1 13 31 1 1 2 1 23 31 1 1 2 1 3
样例输出
1.0 2.01.0 0.01.0 1.0
不算太难的几何题,主要麻烦的是遇见边界需要转移。
这种简单几何题往往可以从多种角度求解。
首先求出t秒不考虑转移可以走的路程长度,即v*t
,然后由相似三角形性质可以得出长度在x轴上和y轴上的投影。
剩下的只需要减去多余的部分,即可得到t
秒后子弹的坐标。
#include<cstdio>#include<cmath>double dis(double x1,double y1,double x2,double y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}double change(double x,double t) { while(x>=t) { x-=t; } return x;}double tabs(double m) { return m>0?m:-m;}int main() { double n,m; while(scanf("%lf %lf",&n,&m)!=EOF) { double x1,y1,x2,y2,v,t; scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&v,&t); double s=v*t;//走过的路程 double st=dis(x1,y1,x2,y2);//两点间的距离 double lx=tabs(x2-x1)*(s/st); //走过多少个x1-x2 if(x2>x1) lx=change(lx+x1,m); else lx=m-change(m-x1+lx,m); double ly=tabs(y2-y1)*(s/st); if(y2>y1) ly=change(ly+y1,n); else ly=n-change(n-y1+ly,n); printf("%.1lf %.1lf\n",lx,ly); } return 0;}
阅读全文
0 0
- Kick Ass Biu
- 1416: Kick Ass Biu [几何]
- 1416: Kick Ass Biu [几何]
- 【HPU 1416 Kick Ass Biu】几何
- 【HPUOJ 1416】Kick Ass Biu 【几何】
- Kick Ass小游戏
- Kick Ass小游戏
- 【HPU 1414: Kick Ass】
- 【hpu1414】Kick Ass
- 1414: Kick Ass [字符串]
- hpu1414: Kick Ass [字符串]
- 1414: Kick Ass【栈+思维】
- HPUOJ 1414: Kick Ass [字符串]
- 多校联萌第三场 问题 A: Kick Ass
- 10 Free Server & Network Monitoring Tools that Kick Ass
- 50 Kick-Ass Websites You Need to Know About
- biu
- ShineTime – A Kick-Ass New jQuery & CSS3 Gallery With Animated Shine Effects
- 自顶向下设计, 自底向上的执行, 软件开发方法
- js数组扁平化
- 2017百度之星初赛(A) 度度熊的01世界(BFS/DFS)
- Day 14
- Refletion2017.8.12
- Kick Ass Biu
- javascript 继承
- Hdu 6113
- 伪代码的写法
- java IO笔记(PipedInputStream/PipedOutputStream)
- Python:如何删除文件中空白行?
- nyoj-119-士兵杀敌(三)【线段树】
- 前端到后台ThinkPHP开发整站(6)
- Windows下配置scrapy,error,Microsoft Visual C++ 14.0 is required