たいちっち

競技プログラミングをしています

【Java】数値の切り上げ(A - Duplex Printing)

解いた問題

AtCoderの「A - Duplex Printing」

提出した回答
import java.util.Scanner;
import static java.lang.Math.ceil;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        float N_float = sc.nextInt();
        int NumOfSheets = (int) ceil(N_float / 2);
        System.out.println(NumOfSheets);
    }
}

受け取った整数をキャストしてfloat型に変えて小数点以下の割り算ができるようにした。割り算の計算結果をMathクラスのceilを使って切り上げた。

ceilは

引数の値以上で、計算上の整数と等しい、最小の(負の無限大にもっとも近い) double値を返します。

という処理をしてくれる。

キャストをしない方法を見つけたい(if文で場合分けもしたくない)。

TODO
  • 他のA問題を解く
追記

他の方の回答で勉強していたら

System.out.println((n / 2) + (n % 2));

と書かれている方がいて「すごい!」となった。

  • 2で割った整数
  • 2で割った余り(0か1)

これらを足せば良い、という方法。
今後はキャストを使用せずに、この方法を真似したい。

 

おわり。。