- 题目大意
- 思路
- AC
添加链接描述
题目大意原形台球桌面
做的时候看到样例猜了一个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就好
写这个题解我自己都是蒙的
表达不出那种圆圆圈圈的思路
int t; cin >> t; ll a, b; while (t--) { cin >> a >> b; b *= 180; ll ans = b / __gcd(b, a); cout << ans - 1 << endl; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)