結果
| 問題 | No.3501 Digit Products 2 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-04-17 23:00:09 |
| 言語 | Go (1.26.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,248 bytes |
| 記録 | |
| コンパイル時間 | 18,749 ms |
| コンパイル使用メモリ | 283,520 KB |
| 実行使用メモリ | 30,320 KB |
| 平均クエリ数 | 10.64 |
| 最終ジャッジ日時 | 2026-04-17 23:00:41 |
| 合計ジャッジ時間 | 23,312 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 63 WA * 9 |
ソースコード
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
r := bufio.NewReader(os.Stdin)
w := bufio.NewWriter(os.Stdout)
defer w.Flush()
var N int
fmt.Fscan(r, &N)
p := make([]int, N-1)
for i := 0; i < N-1; i++ {
fmt.Fprintf(w, "? %d %d\n", i, N-1)
w.Flush()
var x int
fmt.Fscan(r, &x)
if x < 0 {
return
}
p[i] = x
}
var cand []int
for L := 1; L <= 9; L++ {
ok := true
for i := 0; i < N-1; i++ {
if p[i]%L != 0 {
ok = false
break
}
di := p[i] / L
if di < 0 || di > 9 {
ok = false
break
}
}
if ok {
cand = append(cand, L)
}
}
if len(cand) == 0 {
fmt.Fprintf(w, "! -1\n")
return
}
if len(cand) > 1 && N > 2 {
fmt.Fprintf(w, "? 0 1\n")
w.Flush()
var p01 int
fmt.Fscan(r, &p01)
if p01 < 0 {
return
}
var nc []int
for _, L := range cand {
if p[0]%L != 0 || p[1]%L != 0 {
continue
}
d0 := p[0] / L
d1 := p[1] / L
if d0*d1 == p01 {
nc = append(nc, L)
}
}
cand = nc
}
if len(cand) != 1 {
fmt.Fprintf(w, "! -1\n")
return
}
L := cand[0]
d := make([]int, N)
d[N-1] = L
for i := 0; i < N-1; i++ {
d[i] = p[i] / L
}
ans := 0
for i := N - 1; i >= 0; i-- {
ans = ans*10 + d[i]
}
fmt.Fprintf(w, "! %d\n", ans)
}