問題一覧 > 教育的問題

No.3525 擬奇平方数

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

問題文

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

 

ここだけの用語で、正整数 $n$ が擬奇平方数であるとは以下の $2$ 条件を全て満たすということです。

  • $n$ は奇数である。
  • $\sqrt{n} - \sqrt[3]{n} \leq d \leq \sqrt{n} + \sqrt[3]{n}$ を満たす $n$ の約数 $d$ が存在する。

擬奇平方数大好きbot擬奇平方数が大好きなbotです。

擬奇平方数大好きbot奇数 $N$ を隠し持っており、$N$ が擬奇平方数か否かを知りたがっています。

 

最初は $A$ が $N$ のみを成分に持つ長さ $1$ の正整数列として与えられています。

$A$ の長さ以下の正整数 $i$ に対し、$A_i$ で $A$ の $i$ 個目の成分を表します。($A = (A_1, A_2, \ldots)$)

まず以下の一連のやり取り(以下、注文と呼ぶ)を $0$ 回以上 $10^3$ 回以下の好きな回数行うことで $A$ を更新します。

  1. まずあなたが $A$ の長さ以下の正整数 $i$ と $j$ を選び、$A_i + A_j$ か、$A_i - A_j$ か、$A_i \times A_j$ か、$A_i > 0$ である場合に限り $A_j$ の $A_i$ 乗根 $\sqrt[A_i]{A_j}$ を超えない最大の整数 $\lfloor \sqrt[A_i]{A_j} \rfloor$ のいずれかを選び、$x$ と置く。そして $x$ を $A$ の末尾に挿入するようにお願いする。ただし $0 \leq x < 2^{64}$ を満たさなければならない。
  2. 続いて擬奇平方数大好きbotが $x$ を $A$ の末尾に挿入する。

次に以下の一連のやり取り(以下、質問と呼ぶ)を $0$ 回以上 $10^2$ 回以下の好きな回数行います。

  1. まずあなたが $A$ の長さ以下の正整数 $i$ と $j$ を選び、$A_i < A_j$ の真偽を尋ねる。
  2. 続いて擬奇平方数大好きbotが $A_i < A_j$ の真偽を答える。

最後に $N$ が擬奇平方数であるか否かを判定し、擬奇平方数大好きbotに教えてあげてください(以下、回答と呼ぶ)。

注文と質問と回答はこの順にしか行えないことに注意してください。つまり質問を $1$ 回でも行ったら、それ以降は注文をすることができません。

入出力

最初に $0$ 回以上 $10^3$ 回以下の好きな回数だけ注文をしてください。注文は標準入出力を用いて以下の形式で行います:

  1. まず $A$ の長さ以下の正整数 $i$ と $j$ と+-*rのいずれかの文字 $\textrm{op}$ を選び、aと $i$ と $\textrm{op}$ と $j$ を半角空白区切りで $1$ 行で出力してください。ただし後述する $x$ が $0 \leq x < 2^{64}$ を満たさないような出力は不正です。
  2. a $i$ $\textrm{op}$ $j$
    
  3. 続いて整数 $x$ を以下のように定めます。
    • $\textrm{op}$ が+ならば $x = A_i + A_j$ である。
    • $\textrm{op}$ が-ならば $x = A_i - A_j$ である。
    • $\textrm{op}$ が*ならば $x = A_i \times A_j$ である。
    • $\textrm{op}$ がrならば $x = \lfloor \sqrt[A_i]{A_j} \rfloor$ である。ただし $A_i > 0$ でなければならない。
  4. 最後に$A$ の末尾に $x$ が挿入されます。注文に対する返答はなく、特に $x$ の値は入力で与えられません。

次に $0$ 回以上 $10^2$ 回以下の好きな回数だけ質問をしてください。質問は標準入出力を用いて以下の形式で行います:

  1. まず $A$ の長さ以下の正整数 $i$ と $j$ を選び、?と $i$ と<と $j$ を半角空白区切りで $1$ 行で出力してください。
  2. ? $i$ < $j$
    
  3. そして $A_i < A_j$ の真偽に関する情報が以下のように与えられます。
    • $A_i < A_j$ ならばTが与えられる。
    • T
      
    • $A_i \geq A_j$ ならばFが与えられる。
    • F
      

最後にあなたは回答を標準出力に以下の形式で出力してください:

  • $N$ が擬奇平方数ならば、! Yesと出力してください。
  • ! Yes
    
  • $N$ が擬奇平方数でないならば、! Noと出力してください。
  • ! No
    

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

制約

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

  • 全てのやり取りの前に $N$ は固定されており、すなわちやり取りの前後で $N$ の値は変化しない。
  • $N$ は $1 \leq N < 10^6$ を満たす奇数である。

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

  • 各質問に対する返答である入力はTFのいずれかの文字である。

注意

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

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

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

サンプル

以下は擬奇平方数大好きbotが $N = 1$ を隠し持っている場合の対話の一例です。

最初は $A = (N) = (1)$ です。

入力 出力 説明
a 1 + 1 あなたは $A_1 + A_1$ を $A$ の末尾に挿入するようにお願いしました。
擬奇平方数大好きbotは $A_1 + A_1 = 1 + 1 = 2$ を $A$ の末尾に挿入し $A = (1,2)$ となりました。
a 1 - 1 あなたは $A_1 - A_1$ を $A$ の末尾に挿入するようにお願いしました。
擬奇平方数大好きbotは $A_1 - A_1 = 1 - 1 = 0$ を $A$ の末尾に挿入し $A = (1,2,0)$ となりました。
a 2 * 2 あなたは $A_2 \times A_2$ を $A$ の末尾に挿入するようにお願いしました。
擬奇平方数大好きbotは $A_2 \times A_2 = 2 \times 2 = 4$ を $A$ の末尾に挿入し $A = (1,2,0,4)$ となりました。
a 2 r 2 あなたは $\lfloor \sqrt[A_2]{A_2} \rfloor$ を $A$ の末尾に挿入するようにお願いしました。
擬奇平方数大好きbotは $\lfloor \sqrt[A_2]{A_2} \rfloor = \lfloor \sqrt{2} \rfloor = \lfloor 1.41421 \cdots \rfloor = 1$ を $A$ の末尾に挿入し $A = (1,2,0,4,1)$ となりました。
? 5 < 4 あなたは $A_5 < A_4$ か否かを尋ねました。
T 擬奇平方数大好きbotは $A_5 = 1 < 4 = A_4$ が 真であると答えました。
? 1 < 5 あなたは $A_1 < A_5$ か否かを尋ねました。
F 擬奇平方数大好きbotは $A_1 = 1 < 1 = A_5$ が 偽であると答えました。
! Yes あなたは $N$ が擬奇平方数であると答えました。確かに奇数 $N = 1$ の約数 $1$ は $\sqrt{N} - \sqrt[3]{N} = 0 \leq 1 \leq 2 = \sqrt{N} + \sqrt[3]{N}$ を満たすので、これは正解です。

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