結果
| 問題 |
No.1700 floor X
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-10-12 21:53:07 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 21 ms / 2,000 ms |
| コード長 | 514 bytes |
| コンパイル時間 | 11,924 ms |
| コンパイル使用メモリ | 231,280 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-06-26 11:30:15 |
| 合計ジャッジ時間 | 14,790 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 44 |
ソースコード
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
sc := bufio.NewScanner(os.Stdin)
sc.Split(bufio.ScanWords)
sc.Scan()
T, _ := strconv.Atoi(sc.Text())
for i := 0; i < T; i++ {
sc.Scan()
N, _ := strconv.Atoi(sc.Text())
fmt.Println(isqrt(N))
}
}
func isqrt(n int) int { // n <= 1e18
lo, hi := n, 1
for lo > 0 {
lo = lo >> 2
hi = hi << 1
}
for {
m := (hi + lo) / 2
if m*m > n {
hi = m - 1
} else if n >= (m+1)*(m+1) {
lo = m + 1
} else {
return m
}
}
}