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);
}
}