結果
| 問題 |
No.3115 One Power One Kill
|
| コンテスト | |
| ユーザー |
k-kuwata
|
| 提出日時 | 2025-05-14 18:38:56 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,761 bytes |
| コンパイル時間 | 356 ms |
| コンパイル使用メモリ | 12,288 KB |
| 実行使用メモリ | 27,656 KB |
| 平均クエリ数 | 2.00 |
| 最終ジャッジ日時 | 2025-05-14 18:39:02 |
| 合計ジャッジ時間 | 4,794 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 20 |
ソースコード
import sys
def solve():
# AとBを宣言します。
# ここでは、X'が0になることを期待して、
# Aを大きく、BをAのべき乗が0になりやすいように選びたいが、
# 制約と問題の性質から、そのような万能なA,Bを見つけるのは難しい。
# サンプルではA=123, B=456が使われている。
# ここでは、最も単純な値として A=100, B=100 を試す。
# (これが正解である保証はない)
A = 100
B = 100
# B = 101 # 素数で試す場合
# A = 100 # B=101 の場合、A=100 は P-1
print(f"{A} {B}", flush=True)
k_str = sys.stdin.readline().strip()
K = int(k_str)
# X' の値を推測する。
# 最も単純な推測は 0 または 1。
# ここでは、Kの値によらず、常に0を推測してみる。
# (これも正解である保証はない。サンプルはこれでは通らない。)
#
# より洗練された戦略は、K^A mod B == 0 なら 0、
# そうでなく、m^A == 1 mod (B/gcd(K^A,B)) が期待できるなら K^A mod B を推測する、などとなるが複雑。
#
# この問題の性質上、X' が K のみから一意に定まる必要がある。
# もし B | K^A が成り立つなら X' = 0。
# これが常に成り立つ A, B は (B=1以外) 存在しない。
#
# 競技プログラミングのこの種のインタラクティブ問題では、
# 固定値 (0 や 1) を出力することで通る場合がある。
# サンプルでは X' = 64 や 400 なので、常に0や1ではない。
#
# したがって、この問題の正しい解法は、
# (mK)^A mod B が m に依存しないような A, B を選択し、
# その値を計算して出力することになる。
# しかし、そのような A, B を見つけるのはこの考察内では困難だった。
#
# ここでは、仮に K^A mod B を出力する戦略をとってみる。
# (ただし、(mK)^A mod B が m によらない保証がないため、これも正しくない可能性が高い)
# K が非常に大きい場合(例: K > 10^5 / 2)、X=K となり、X' = K^A mod B となる。
# そうでない場合でも、X' が K^A mod B になることを期待する。
# pow(K, A, B) を計算
# K=0 の場合 pow(0,A,B) は A=0なら1, A>0なら0 (B=1なら0)
# Kはgcdなので K >= 1
predicted_x_prime = pow(K, A, B)
print(predicted_x_prime, flush=True)
# ret_str = sys.stdin.readline().strip()
# ret = int(ret_str)
# if ret == 0:
# # 間違いの場合の処理 (デバッグ用)
# pass
if __name__ == '__main__':
solve()
k-kuwata