Function Composition

2 secs 1024 MB
RedSpica's icon RedSpica

合成関数は結合法則が成立します.証明(数学の景色様)
またffの定義の仕方により,最後に(105+3)(10^5+3)で割った余りを求めるのも, 合成をしながら(105+3)(10^5+3)で割った余りを求めるのも計算結果は変わりません.

よって,ダブリングテーブルを前計算しておくことによって 各クエリに時間計算量O(logni)O(\log n_i)で答えることができます.
問題全体としての時間計算量は m=max(ni),P=105+3m = \max (n_i),P=10^5+3として O((P+Q)logm)O((P+Q) \log m)となり, この問題の条件下では十分高速です. 整数型のサイズに上限がある言語で実装する場合はオーバーフローに気を付けてください.

実装例