计算球的位置(水题)

Description

丁小辉准备参加YT大学首届斯诺克比赛,但是他发现自己击中目标有问题。教练说:你必须在任何时刻知道球的位置,而球的位置是由击球的速度和时间决定的。那么,给定初始位置和初始速度,经过 t 时间后,球会落到台面的哪个点呢?

为简单起见,假定台面是一个矩形,矩形的左上角坐标是 (0,0), 右下角坐标是 (n,m)。现在有一个小球在矩形内部的 (x0,y0) 点,他的初始速度用 x 方向速度和 y 方向速度给出,分别用xv,yv 来代表。现在需要知道小球在 t 时间后的坐标。已知小球碰到矩形边界会发生完全弹性碰撞。注意:我们假设小球滚动的速度是恒定不变的。

Input

多组测试样例。

第一行输入两个数 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)

所有输入均为正整数。

Output

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

Sample Input

10 101 14 63

Sample Output

7 1

HINT

小球在碰到角落时原路返回。


这道题没什么难得,想通了就行了,题中说速度一直不变,那球的总运动就分为在x轴的分运动与在y轴的分运动,就以xv,yv去求就行了。


#include <iostream>
using namespace std;
int main()
{
    int n,m,x0,y0,xv,yv,t;
    while(cin>>n>>m>>x0>>y0>>xv>>yv>>t)
    {
        int xen,yen;
        int xlength=xv*t+x0;
        int ylength=yv*t+y0;
        if((xlength/n)%2==1)
            xen=n-xlength%n;
        else
            xen=xlength%n;
         if((ylength/m)%2==1)
            yen=m-ylength%m;
        else
            yen=ylength%m;
        cout<<xen<<" "<<yen<<endl;
    }
    return 0;
}

转载于:https://www.cnblogs.com/MisdomTianYa/p/6581811.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值