题目大意
原形台球桌面
思路
做的时候看到样例猜了一个180上去,因为样例需要180,wa了,因为int不够用
longlong 就过了
既然是写题解
那就看看题吧
上图a看到了吧,场外的入射角所在的线和球最后出来的线关于切线对称
我们假设垂直射入,则结果是1
相当于此球的速度没变,速度方向转变了180°对吧
这和圆有什么关系呢
我们可以想想为什么球为啥方向变了呢,
在发球点建立坐标系,在纵向量上,速度方向不会变
会变的只有横坐标
且园内每一个点的角度转变都是均匀的,180°暂且算总的角度
180/(a/b) = ans / n (n为使得刚好出来的圈数)
ans在圆内的总点数,包括入口点数,要满足ans 是整数
则 180 /(a/b) 已经是固定的,ans 为满足 条件的 最小整数,因为ans和n可以同步增长,最坏情况是n=a,ans = 180*b
去掉重复的射入情况,去gcd就好
写这个题解我自己都是蒙的
表达不出那种圆圆圈圈的思路
AC
int t;
cin >> t;
ll a, b;
while (t--)
{
cin >> a >> b;
b *= 180;
ll ans = b / __gcd(b, a);
cout << ans - 1 << endl;
}