若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

2361: 计算球的位置

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,305

题目描述

丁小辉准备参加YT大学首届斯诺克比赛,但是他发现自己击中目标有问题。教练说:你必须在任何时刻知道球的位置,而球的位置是由击球的速度和时间决定的。那么,给定初始位置和初始速度,经过 t 时间后,球会落到台面的哪个点呢?
为简单起见,假定台面是一个矩形,矩形的左上角坐标是 (0,0), 右下角坐标是 (n,m)。现在有一个小球在矩形内部的 (x0,y0) 点,他的初始速度用 x 方向速度和 y 方向速度给出,分别用 xv,yv 来代表。现在需要知道小球在 t 时间后的坐标。已知小球碰到矩形边界会发生完全弹性碰撞。注意:我们假设小球滚动的速度是恒定不变的。

输入

多组测试样例。
第一行输入两个数 n 和 m。(10<=n,m<=500)
第二行输入小球坐标 x0,y0。(1<=x0<=n,1<=y0<=m)
第三行给出小球横纵向速度 xv,yv。(0<=xv<=n,0<=yv<=m)
第四行输入一个时间 t。(1<=t<=1000)
所有输入均为正整数。

输出

两个数,分别代表 x 坐标和 y 坐标

样例输入

10 10
1 1
4 6
3

样例输出

7 1

参考代码

#include<stdio.h>
int main() 
{
    int n,m,xs,ys,xv,yv,x0,y0,t;
    while(scanf("%d %d",&n,&m)!=EOF) 
    {
        scanf("%d %d",&x0,&y0);
        scanf("%d %d",&xv,&yv);
        scanf("%d",&t);
        xs=xv*t+x0;
        ys=yv*t+y0;
        xs=xs%(2*n);
        ys=ys%(2*m);
        if(xs>n)
                    xs=2*n-xs;
        if(ys>m)
                    ys=2*m-ys;
        printf("%d %dn",xs,ys);
    }
    return 0;
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Skip Dreams孤独患者 原站点
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist