この問題はクエリごとに O(1) で求めることができます。
歯車の歯数がいくつ分回転しているかはすべての歯車で等しいため、途中の歯車は無視して良いことが分かります。
よって答えは ⌈AXAY⌉ で求まります。(⌈x⌉はx以上の最小の整数を表します。)
また、 i+1 番目の歯車を ちょうど 1 回転させるのに、 i 番目の歯車は AiAi+1 回転させる必要があることを考えると、
Y 番目の歯車をちょうど 1 回転させるのに、 X 番目の歯車は
AY−1AY × AY−2AY−1 × AY−3AY−2 ... × AXAX+1 = AXAY
回転する必要があるとも考えられます。
解答例(C++)