package main import . "fmt" import . "math/big" func main() { a, b, _ := gen() Println(a, b) var k int Scan(&k) if k % b == 0 { Println(0) } else { Println(1) } } func init() { check() } func check() { a, b, y := gen() yy := NewInt(int64(y)) t := map[int]bool{} for x := 100; x <= 1e5; x++ { k := int(new(Int).GCD(nil, nil, NewInt(int64(x)), yy).Int64()) t[k] = true } aa := NewInt(int64(a)) bb := NewInt(int64(b)) for k := range t { var ans int if k % b == 0 { ans = 0 } else { ans = 1 } for x := 100; x <= 1e5; x++ { xx := NewInt(int64(x)) kt := int(new(Int).GCD(nil,nil,xx,yy).Int64()) if kt != k { continue } xd := int(new(Int).Exp(xx, aa, bb).Int64()) if ans != xd { panic(Sprintf("x=",x)) } } } } func gen() (int, int, int) { sv := make([]bool, 5e4+1) for p, i, j := 3, 2, 4; p*p < 25e8; p,i,j=p+i,j,i { if sv[p] { continue } for x := p+p; x < len(sv); x += p { sv[x] = true } if p < 100 { continue } m := NewInt(1e9+7) b := NewInt(int64(p)) for a := p-1; a <= 1e5; a += p-1 { y := int(new(Int).Exp(NewInt(int64(a)), b, m).Int64()) if y >= p && y % p == 0 { return a, p, y } } } return 0, 0, 0 }