結果
問題 | No.3 ビットすごろく |
ユーザー | SugihaM |
提出日時 | 2020-04-17 12:27:57 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 5 ms / 5,000 ms |
コード長 | 824 bytes |
コンパイル時間 | 13,320 ms |
コンパイル使用メモリ | 226,220 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-01 09:46:25 |
合計ジャッジ時間 | 14,381 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 33 |
ソースコード
package main import ( "bufio" "fmt" "os" "strconv" ) var sc = bufio.NewScanner(os.Stdin) func Scanner() string { sc.Scan() return sc.Text() } func main() { buf := make([]byte, 0) sc.Buffer(buf, 100000007) sc.Split(bufio.ScanWords) n, _ := strconv.Atoi(Scanner()) trans := make(map[int]int) fer := []int{1} ans := -1 for i, j := 1, []int{}; len(fer) > 0; i, fer, j = i+1, j, nil { for _, k := range fer { if k == n { ans = i j = nil break } else if trans[k] == 0 { trans[k] = 1 dis := count(k) m := k + dis l := k - dis if m <= n { j = append(j, m) } if l > 0 { j = append(j, l) } } } } fmt.Println(ans) } func count(k int) int { str := fmt.Sprintf("%b", k) c := 0 for _, s := range str { if s == '1' { c += 1 } } return c }