結果
| 問題 | No.648 お や す み |
| コンテスト | |
| ユーザー |
tsuchinaga
|
| 提出日時 | 2019-03-28 13:20:02 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 683 bytes |
| コンパイル時間 | 16,427 ms |
| コンパイル使用メモリ | 220,796 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-12 19:25:52 |
| 合計ジャッジ時間 | 17,350 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 84 |
ソースコード
package main
import (
"fmt"
"math"
"math/big"
)
func main() {
var n int
_, _ = fmt.Scan(&n)
sheep := func(i int) int {
bi1 := big.NewInt(int64(i))
bi2 := big.NewInt(int64(i))
bi1.Mul(bi1, bi1)
bi1.Add(bi1, bi2)
bi1.Div(bi1, big.NewInt(2))
return int(bi1.Int64())
}
i := 0
min, max := 1, int(math.Pow10(9))*2
for min != max {
i = int(math.Ceil(float64(max-min)/2)) + min
s := sheep(i)
if s == n {
min, max = i, i
} else if s > n {
max = i - 1
} else {
min = i
}
if max == min {
i = max
}
// fmt.Println(min, max, i, sheep(i), n)
}
if n == sheep(i) {
fmt.Println("YES")
fmt.Println(i)
} else {
fmt.Println("NO")
}
}
tsuchinaga