2020年3月1日 星期日

[zerojudge]a021. 大數運算

a021. 大數運算

理論上大數運算是很驚悚的問題,因為就算是long long int也不夠儲存,所以要把每個位數存進陣列然後透過超複雜的演算法才能得到答案。 幸好Java有幫我們寫好了函式庫可用,那就是BigInteger這個神奇類別,提供很多大數的計算方法,輕輕鬆鬆解決這個地獄難題。

如果對大數運算的實作有興趣的話可以看這個演算法筆記,裡面詳盡介紹了如何用優雅至極的語法完成大數運算。

程式碼如下:

/* a021. 大數運算
*
*  2020/3/2
*/

import java.util.Scanner;
import java.math.BigInteger;

public class Pa021{

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);

        while(scanner.hasNext()){
            BigInteger big_a = new BigInteger(scanner.next());
            String op = scanner.next();
            BigInteger big_b = new BigInteger(scanner.next());
                
            switch(op){
                case "+":
                    big_a = big_a.add(big_b);
                    break;
                case "-":
                    big_a = big_a.add(big_b.negate());
                    break;
                case "*":
                    big_a = big_a.multiply(big_b);
                    break;
                case "/":
                    big_a = big_a.divide(big_b);
                    break;
            }

            System.out.println(big_a);
        }
    }
}

沒有留言:

張貼留言