[AtCoder] E - Putting Candies

Problem Link

If we pick A[i] the 2nd time, it means we have a cycle.

Proof:

1st time we pick A[i], the sum before adding A[i] is x; 2nd time we pick A[i], the sum before adding A[i] is y;  For this to happen x % N == y % N must hold. Otherwise we would not arrive at index i again. 

x -> x + A[i]

y -> y + A[i]

(x + A[i]) % N == (y + A[i]) % N. This means we'll repeat the same set of picks in order indefinitely until we run out of operations. 

 

By pigeon hole principle, we'll have a cycle after at most N operations. 

 

The final answer can be constructed accordingly using the above information. 

 

posted @ 2024-08-16 08:05  Review->Improve  阅读(10)  评论(0编辑  收藏  举报