您的位置:首页 > 其它

UVA 10387 Billiard

2016-07-13 14:39 302 查看

UVA-10387

题意:给了5个数据,分别为 水平边高度、竖直边高度、飞行时间、竖直边被碰撞次数、水平边被碰撞次数。把球从中心释放,经过给定时间和碰撞之后正好回到中心,求球的初始角度和速度。

解题思路:因为会回到中心,每碰撞一次竖直边,表示最终会在水平上移动完整的水平边长度。竖直同理。知道它总的水平和竖直移动长度,就可以求出实际的路线长度 l。除以时间就是速度。角度就利用反三角函数求。因为出来的是弧度,atan(tb/ta)/pi *180转成角度。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
double a,b,s,m,n,ta,tb,l,v;
int main () {
double pi = acos(-1.0);
freopen("xx.in","r",stdin);
while (scanf("%lf%lf%lf%lf%lf",&a,&b,&s,&m,&n) && (a || b || s || n || m)){
ta = a*m;
tb = b*n;
l = sqrt(ta*ta + tb*tb);
l = l/s;
v = atan(tb / ta)/pi * 180;
printf("%.2lf %.2lf\n",v,l);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: