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 上. - 不確定該點是幾次彈射後,就對這四個點都進行一次方程求解,取最小值.