C.Ray Tracing
题意:在n*m的空间内,一个小球从(0,0)以固定的速度
思路:
1. 按照给出的样例模拟走几遍,可以发现结束的时间为
2. 希望将这些折线放在
- 任意点
(x,y) ,设在直线y=x 上的点为(x′,y′) . x≡x′mod(2⋅n) ,y≡y′mod(2⋅m) - 即转化成线性方程组
2⋅n⋅X+2⋅m⋅Y=y−x - 用扩展gcd求解
- 假设点
(x,y) 是第一次反弹后那条折线上的点,那么它在y=x 上的点为(2⋅n−x,y) 或(x,2⋅m−y) . - 若是两次反弹后那条折线上的点,那么它在
y=x 上的点为(2⋅n−x,2⋅m−y) . - 若点
(x,y) 中x=y,那么它就在直线y=x 上. - 不确定该点是几次弹射后,就对这四个点都进行一次方程求解,取最小值.