BigIntで切り上げ計算をする(JavaScript)

AtCoder

BigIntはMathクラスが使えない

AtcoderのB – Between a and b … という問題を解くにあたって、JavaScriptのBigIntを使う必要があった。

四則演算は、Numberと同じように実行できるのだが、Mathクラスが使えないので、割り算をした結果を切り上げできなくて困った。

※ BigIntで割り算を行うと、デフォルトで切り捨てになる

divCeil関数

切り上げを整数のみで行うには、modした結果を2倍した値が割る数以上であるかを判定すればいいので、下記の divCeil関数を作って対処した。

'use strict'

let a = BigInt(3)
let b = BigInt(2)

// 割り算の結果を切り上げする
function divCeil (x, y) {
    if((x % y) * BigInt(2) >= y) {
    return x / y + BigInt(1)
}
    return x / y
}

console.log(divCeil(a, b))

蛇足だが、競技プログラミングをJavaScriptでやるには障害が多く、かなりの縛りプレイを強要されるのであまりオススメしない。

AtCoder

Posted by kyogom