The 2021 CCPC Weihai Onsite J. Circular Billiard Table

contents:

添加链接描述

题目大意

原形台球桌面
在这里插入图片描述

思路

做的时候看到样例猜了一个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;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.0-0.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值