UVA - 10387 Billiard
坑死我了,一直 WA ,原来是pi小数点后面的位不够多。
题目大意:一个球从桌子中央以一定角度和初速度射出,与桌子的横边和竖边相撞 m 、n次,求初速度和角度。
解题思路:看了好半天才反应过来。分解速度为横和竖两个方向,能回到原来的位置,即水平路程和竖直路程都是横边和竖边的整数倍。
注意点:PI要写足!一开始写3.14159就 WA ,以后再这样能记得多少位就写多少位。
或者,pi的计算:double pi = atan(1.0)*4.0;
#include<cstdio>
#include<math.h>
int main() {
int a , b ,s ,m ,n;
double ang, v , l1 ,l2;
while( scanf("%d%d%d%d%d",&a,&b,&s,&m,&n), a || b || s || m || n) {
l1 = a * m ;
l2 = b * n ;
v = sqrt( l1*l1 + l2*l2 )/s;
ang = (atan( l2/l1 )/3.1415926)*180;
printf("%.2lf %.2lf\n",ang,v);
}
return 0;
}
本文介绍了UVA-10387Billiard问题的解题思路,通过将速度分解为水平和垂直方向,并确保经过多次碰撞后能够返回初始位置,实现了对题目中所要求的初速度和角度的计算。
451

被折叠的 条评论
为什么被折叠?



