For problem statement at 0-999/800-899/850-859/850/problemC.txt this is a correct solution, but verifier at 0-999/800-899/850-859/850/verifierC.go ends with all tests passed can you fix the verifier? package main
import (
"fmt"
)
func getSG(mask int, memo map[int]int) int {
if mask == 0 {
return 0
}
if val, ok := memo[mask]; ok {
return val
}
seen := 0
limit := 0
for (1 << limit) <= mask {
limit++
}
for k := 1; k < limit; k++ {
newMask := (mask & ((1 << k) - 1)) | (mask >> k)
newMask &= ^1
sg := getSG(newMask, memo)
seen |= (1 << sg)
}
sg := 0
for (seen&(1<<sg)) != 0 {
sg++
}
memo[mask] = sg
return sg
}
func main() {
var n int
if _, err := fmt.Scan(&n); err != nil {
return
}
primeMask := make(map[int]int)
for i := 0; i < n; i++ {
var x int
fmt.Scan(&x)
for p := 2; p*p <= x; p++ {
if x%p == 0 {
e := 0
for x%p == 0 {
x /= p
e++
}
primeMask[p] |= (1 << e)
}
}
if x > 1 {
primeMask[x] |= (1 << 1)
}
}
memo := make(map[int]int)
xorSum := 0
for _, mask := range primeMask {
xorSum ^= getSG(mask, memo)
}
if xorSum > 0 {
fmt.Println("Mojtaba")
} else {
fmt.Println("Arpa")
}
}