結果
問題 |
No.3115 One Power One Kill
|
ユーザー |
![]() |
提出日時 | 2025-04-20 17:19:37 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 367 ms / 2,000 ms |
コード長 | 1,227 bytes |
コンパイル時間 | 13,666 ms |
コンパイル使用メモリ | 246,500 KB |
実行使用メモリ | 26,252 KB |
平均クエリ数 | 2.00 |
最終ジャッジ日時 | 2025-04-20 17:20:01 |
合計ジャッジ時間 | 23,236 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 20 |
ソースコード
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 }