問題一覧 > 教育的問題

No.3522 冪乗乗

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / リアクティブ問題 (詳しくはこちら
タグ : / 解いたユーザー数 22
作問者 : 👑 p-adic / テスター : 👑 binap
ProblemId : 10976 / yukicoder contest 498 リアクティブコンテスト (順位表) / 自分の提出
問題文最終更新日: 2025-02-10 12:51:45
yukicoder contest 498 リアクティブコンテストの他の問題:

問題文

この問題はリアクティブ形式の(ジャッジ側のプログラムと対話的に実行する必要がある)問題です。

 

最初に $3$ 個の非負整数 $N, M, L$ が与えられます。

 

冪乗大好きbot冪乗が大好きなbotです。

冪乗大好きbotは正整数 $B$ を隠し持っており、$N^{(M^L)}$($N$ の「$M$ の $L$ 乗」乗)を $B$ で割った余り $N^{(M^L)} \bmod B$ を知りたがっています。

ただしここでは $0^0$ を $1$ と定義します。

 

そこで、以下の質問を $0$ 回以上 $100$ 回以下の好きな回数行います。

  1. まずあなたが $10^9$ 以下の非負整数 $i$ と $j$ を選び、$i^j$ を $B$ で割った余り $i^j \bmod B$ を尋ねる。
  2. 続いて冪乗大好きbotが $i^j \bmod B$ を答える。

最後に $N^{(M^L)} \bmod B$ を求めてください。

入出力

最初に $N, M, L$ が半角空白区切りで標準入力から $1$ 行で与えられます。

$N$ $M$ $L$

その後で質問を $0$ 回以上 $100$ 回以下の好きな回数してください。質問は標準入出力を用いて以下の形式で行います:

  1. まず $10^9$ 以下の非負整数 $i$ と $j$ を選び、?と $i$ と $j$ を半角空白区切りで $1$ 行で出力してください。
  2. ? $i$ $j$
    
  3. 続いて $i^j \bmod B$ が $1$ 行で与えられます。この際のジャッジ計算量は $O(\log_2 \max \{1,j\})$ であることが保証されます。
  4. $i^j \bmod B$
    

次にあなたはこの問題に対する答えを標準出力に以下の形式で出力してください:

  • !と $N^{(M^L)} \bmod B$ を半角空白区切りで $1$ 行で出力してください。
  • ! $N^{(M^L)} \bmod B$
    

最後に改行してください。

制約

入力では与えられませんが $B$ は以下の制約を満たします:

  • 全ての質問の前に $B$ は固定されており、すなわち質問の前後で $B$ の値は変化しない。
  • $B$ は $1 \leq B \leq 10^9$ を満たす整数である。

入力は以下の制約を満たします:

  • $N$ は $0 \leq N \leq 10^2$ を満たす整数である。
  • $M$ は $0 \leq M \leq 10^2$ を満たす整数である。
  • $L$ は $0 \leq L \leq 10^2$ を満たす整数である。
  • $10^9$ 以下の任意の非負整数 $i, j$ に対し、$i^j$ を $B$ で割った余りを尋ねた際の返答である入力 $i^j \bmod B$ は $0 \leq i^j \bmod B < B$ を満たす整数である。

注意

リアクティブ形式の問題に慣れてない方は、リアクティブ形式の問題についてのまとめも参考にしてください。

この問題において、以下の指示に従っていない提出のジャッジ結果は保証しません:

  • 出力は指定された形式に厳格に従ってください。例えば余計な空白を入れたりしないでください。
  • 出力を行うたびに末尾に改行を入れて標準出力をflushしてください。
  • この問題に対する答えを出力した後はプログラムをすぐに終了させてください。

サンプル

以下は冪乗大好きbotが $B = 10$ を隠し持っている場合の対話の一例です。

入力 出力 説明
4 3 2 $(N,M,L) = (4,3,2)$ が入力で与えられました。
? 0 0 あなたは $0^0$ を $B$ で割った余りを尋ねました。
1 冪乗大好きbotは $0^0 = 1$ を $B = 10$ で割った余りが $1$ であると答えました。
? 5 2 あなたは $5^2$ を $B$ で割った余りを尋ねました。
5 冪乗大好きbotは $5^2 = 25$ を $B = 10$ で割った余りが $5$ であると答えました。
? 2 5 あなたは $2^5$ を $B$ で割った余りを尋ねました。
2 冪乗大好きbotは $2^5 = 32$ を $B = 10$ で割った余りが $2$ であると答えました。
? 10 1 あなたは $10^1$ を $B$ で割った余りを尋ねました。
0 冪乗大好きbotは $10^1 = 10$ を $B = 10$ で割った余りが $0$ であると答えました。
? 4 9 あなたは $4^9$ を $B$ で割った余りを尋ねました。
4 冪乗大好きbotは $4^9 = 262144$ を $B = 10$ で割った余りが $4$ であると答えました。
! 4 あなたは $N^{(M^L)} = 4^{(3^2)}$ を $B = 10$ で割った余りが $4$ であると答えました。これは正解です。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。