No.2993 冪乗乗 mod 冪乗
タグ : / 解いたユーザー数 4
作問者 : 👑 p-adic / テスター : 👑 testestest
問題文
この問題の実行時間制限は10000[ms]です。writer解の実行時間はc++で415[ms]、PyPy3で5293[ms]、Python3で TLE となっており、高速な言語・処理系の使用を推奨します。
問題文
以下のような問題を考えます:
入力に $2$ 以上の整数 $B$ と $2$ つの非負整数 $N,M$ が与えられます。
以下の $2$ 条件を全て満たす整数 $a$ が存在するか否かを判定し、存在する場合はそのような $a$ を1つ求めてください:
- $0 \leq a < B^N$ である。
- 次の条件を満たす非負整数 $n_0$ が存在する:
- $n_0$ 以上の任意の非負整数 $n$ に対し $M^{B^n} \equiv 1 + B^n a \pmod{B^{n+N}}$ である。
以下、上記 $2$ 条件をこの問題に対する解条件と呼びます。
入力の最初に正整数 $T$ が与えられます。$T$ 個の問題に答えてください。
入力
$T$ 以下の各正整数 $t$ に対し、$t$ 個目の問題に対する入力 $B,N,M$ を $B_t,N_t,M_t$ と置きます。
この時、入力は次の形式で標準入力から $1 + T$ 行で与えられます:
- $1$ 行目に $T$ が与えられます。
- $T$ 以下の各正整数 $t$ に対し、$1 + t$ 行目に $t$ 個目の問題に対する入力 $B_t, N_t, M_t$ が半角空白区切りで与えられます。
$T$ $B_1$ $N_1$ $M_1$ $\vdots$ $B_T$ $N_T$ $M_T$
制約
入力は以下の制約を満たします:
- $T$ は $1 \leq T \leq 10^5$ を満たす整数
- $T$ 以下の任意の正整数 $t$ に対し、
- $B_t$ は $2 \leq B_t \leq 10^6$ を満たす整数
- $N_t$ は $0 \leq N_t$ かつ $B_t^{N_t} \leq 10^6$ を満たす整数
- $M_t$ は $0 \leq M_t \leq 10^{18}$ を満たす整数
出力
$T$ 以下の各正整数 $t$ に対し、$t$ 番目の問題に対する解条件を満たす整数 $a$ が存在する場合はそのような $a$ を $t$ 行目に出力し、存在しない場合は -1
と $t$ 行目に出力してください。
最後に改行してください。
なおこの問題はスペシャルジャッジ問題です。正解が複数ある場合はどれを出力しても構いません。
ただし出力は上述した形式に厳格に従ってください。例えば余計な空白がある場合のジャッジの挙動は保証されません。
サンプル
サンプル1
入力
1 2 0 0
出力
-1
整数 $a$ がテストケース $(B,N,M) = (2,0,0)$ に対する解条件を満たすということは、以下の $2$ 条件を満たすということです:
- $0 \leq a < 1$ である。
- 次の条件を満たす非負整数 $n_0$ が存在する:
- $n_0$ 以上の任意の非負整数 $n$ に対し $0 \equiv 1 + 2^n a \pmod{2^n}$ である。
条件1から $a$ は $0$ に限られますが、$a = 0$ とすると非負整数 $n_0$ をどのように選んでも $0 \equiv 1 + 2^n a \pmod{2^n}$ が $n = \max \{n_0,1\}$ の時に成り立ちませんので条件2が成り立たず、従って解条件を満たす整数 $a$ は存在しません。
サンプル2
入力
1 2 0 1
出力
0
整数 $a$ がテストケース $(B,N,M) = (2,0,1)$ に対する解条件を満たすということは、以下の $2$ 条件を満たすということです:
- $0 \leq a < 1$ である。
- 次の条件を満たす非負整数 $n_0$ が存在する:
- $n_0$ 以上の任意の非負整数 $n$ に対し $1 \equiv 1 + 2^n a \pmod{2^n}$ である。
$a = 0$ と定めると $a$ は条件1を満たしますし、$n_0 = 0$ と定めれば $n_0$ 以上の任意の非負整数 $n$ に対し $1 \equiv 1 + 2^n a \pmod{2^n}$ も成り立つので条件2も満たします。従って $a$ は解条件を満たします。
サンプル3
入力
1 2 1 1
出力
0
整数 $a$ がテストケース $(B,N,M) = (2,1,1)$ に対する解条件を満たすということは、以下の $2$ 条件を満たすということです:
- $0 \leq a < 2$ である。
- 次の条件を満たす非負整数 $n_0$ が存在する:
- $n_0$ 以上の任意の非負整数 $n$ に対し $1 \equiv 1 + 2^n a \pmod{2^{n+1}}$ である。
$a = 0$ と定めると $a$ は条件1を満たしますし、$n_0 = 0$ と定めれば $n_0$ 以上の任意の非負整数 $n$ に対し $1 \equiv 1 + 2^n a \pmod{2^{n+1}}$ も成り立つので条件2も満たします。従って $a$ は解条件を満たします。
サンプル4
入力
6 3 0 0 3 0 1 3 0 2 3 1 0 3 1 1 3 1 2
出力
-1 0 -1 -1 0 -1
$T = 6$ 個の問題に答えてください。
サンプル5
入力
18 4 0 0 4 0 1 4 0 2 4 0 3 4 0 4 4 0 5 4 1 0 4 1 1 4 1 2 4 1 3 4 1 4 4 1 5 4 2 0 4 2 1 4 2 2 4 2 3 4 2 4 4 2 5
出力
-1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 4 -1 12
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。