解法1
k 日目がエイプリルフールだと仮定すると、正しい結果は ak と bk を入れ替えて計算した値になります。したがって、ak と bk を入れ替えて命令に従った時の結果が Y に一致するような k をすべて出力します。
命令に従うことを、(x1) に対して左から (ai0bi1) を掛けることだと言い換えると、
行列の累積積と、累積積の逆行列を事前に時間計算量 O(N) で計算しておけば、各 i について、i 日目がエイプリルフールだと仮定した時の正しい結果は O(1) で計算することができます。
1≤ai≤109<109+7 であることから、逆行列は必ず計算することができます。
解法2
p0=1、pi=pi−1ai(1≤i≤N)、b0=X とします。
すると、k 日目がエイプリルフールだと仮定した時の正しい結果は
(akbki=0∑k−1pipNbi+bkakpkpNbk+i=k+1∑NpipNbi) mod (109+7)
です。事前に pi と、それを使った pipNbi の部分を累積和として時間計算量 O(N) で求めておけば、各 i について O(1) で計算することができます。