結果
| 問題 |
No.642 Two Operations No.1
|
| コンテスト | |
| ユーザー |
tsuchinaga
|
| 提出日時 | 2019-04-05 17:17:24 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 2,000 ms |
| コード長 | 561 bytes |
| コンパイル時間 | 9,148 ms |
| コンパイル使用メモリ | 231,480 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-06-11 20:40:13 |
| 合計ジャッジ時間 | 9,990 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 15 |
ソースコード
package main
import "fmt"
func main() {
var n int
_, _ = fmt.Scan(&n)
// 2倍し続けてオーバーするのに必要な手数
cnt := 0
a := 1
nums := []int{1}
for a < n {
cnt++
a *= 2
nums = append(nums, a)
}
// 2倍するだけで一致したなら、そこで出力しておわり
if a == n {
fmt.Println(cnt)
return
}
// fmt.Println(nums)
// 2のべき乗の値で引いて調整する
for b := a - n; b > 0; {
i := 0
for nums[i] <= b {
i++
}
// fmt.Println(b, i)
b -= nums[i-1]
cnt++
}
fmt.Println(cnt)
}
tsuchinaga