D - あまり Editorial

Time Limit: 5 sec / Memory Limit: 256 MB

問題文

44 つの整数 X,P,A,B(1X<P<231,0AB<231)X, P, A, B (1 ≦ X < P < 2^{31}, 0 ≦ A ≦ B < 2^{31}) が与えられます。ただし、PP は素数です。 Xi(AiB)X^i (A ≦ i ≦ B)PP で割った余りの最小値を求めてください。

この問題の入力は得点に影響しない入力例 11 を除いて、このC++プログラムを用いて生成しました。擬似乱数生成器の初期化に用いられるプログラムの第 11 引数は 11 以上 10,00010,000 以下の整数を用いました。このファイルii 行目 (1i10,000)(1 ≦ i ≦ 10,000) は、入力生成プログラムの第 11 引数が ii であるときの出力と一致します。すなわち、与えられるテストケースは入力例 11 を除いて、このファイルのいずれかの行と一致します。


入力

入力は以下の形式で標準入力から与えられる。

XX PP AA BB
  • 11 行目には、44 つの整数 X,P,A,B(1X<P<231,0AB<231)X, P, A, B (1 ≦ X < P < 2^{31}, 0 ≦ A ≦ B < 2^{31}) が空白区切りで与えられる。ただし、PP は素数である。

出力

Xi(AiB)X^i (A ≦ i ≦ B)PP で割った余りの最小値を 11 行に出力せよ。


入力例1Copy

Copy
2 11 3 9

出力例1Copy

Copy
3

Xi(AiB)X^i (A ≦ i ≦ B)PP で割った余りは 8,5,10,9,7,3,68, 5, 10, 9, 7, 3, 6 であるので、最小値は 33 である。 この入力は入力生成プログラムを用いて作られたものではないので、得られる得点に影響しない。


入力例2Copy

Copy
15 7159 12 12818

出力例2Copy

Copy
1

この入力は入力生成プログラムの第 11 引数に 11 を与えて生成した。


入力例3Copy

Copy
1400884 50141599 4 458568

出力例3Copy

Copy
114

この入力は入力生成プログラムの第 11 引数に 33 を与えて生成した。


入力例4Copy

Copy
1591755 291456379 215 1223

出力例4Copy

Copy
96324

この入力は入力生成プログラムの第 11 引数に 2525 を与えて生成した。



2025-03-30 (Sun)
13:52:03 +00:00