結果

問題 No.3501 Digit Products 2
コンテスト
ユーザー 2251799813685248
提出日時 2026-03-07 19:56:21
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
RE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,141 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 154 ms
コンパイル使用メモリ 85,376 KB
実行使用メモリ 85,792 KB
平均クエリ数 2.00
最終ジャッジ日時 2026-04-17 19:34:06
合計ジャッジ時間 19,287 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample RE * 1
other WA * 11 RE * 61
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

N = int(input())
non_zero_digits = [N-1]
answers = [-1]*N #i番目とN-1番目の積の結果が入った配列
for i in range(N-2, -1, -1):
	print("?", N-1, i, flush=True)
	p = int(input())
	answers[i] = p
	if p != 0:
		non_zero_digits.append(i)

if len(non_zero_digits) >= 3:
	print("?", non_zero_digits[1], non_zero_digits[2]) #最後の質問
	highest_digit = answers[non_zero_digits[1]]*answers[non_zero_digits[2]]//int(input()) #最高位の2乗が求まる
	for i in range(1, 10):
		if i*i == highest_digit:
			highest_digit = i
			break
	ans = ["0" for k in range(N)]
	ans[N-1] = str(highest_digit)
	for i in range(1, len(non_zero_digits)):
		ans[non_zero_digits[i]] = str(answers[non_zero_digits[i]]//highest_digit)
	print("! " + "".join(ans[::-1]))
elif len(non_zero_digits) == 2:
	temp = answers[non_zero_digits[1]]
	if temp == 1 or temp == 25 or temp == 49 or temp == 64 or temp == 81:
		for i in range(1, 10):
			if i*i == temp:
				ans = ["0" for k in range(N)]
				ans[non_zero_digits[0]] = str(i)
				ans[non_zero_digits[1]] = str(i)
				print("! " + "".join(ans[::-1]))
				break
	else:
		print("! -1")
else:
	print("! -1")
0