2020年3月1日 星期日

[zerojudge]a021. 大數運算

a021. 大數運算

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

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

程式碼如下:

  1. /* a021. 大數運算
  2. *
  3. * 2020/3/2
  4. */
  5.  
  6. import java.util.Scanner;
  7. import java.math.BigInteger;
  8.  
  9. public class Pa021{
  10.  
  11. public static void main(String[] args){
  12. Scanner scanner = new Scanner(System.in);
  13.  
  14. while(scanner.hasNext()){
  15. BigInteger big_a = new BigInteger(scanner.next());
  16. String op = scanner.next();
  17. BigInteger big_b = new BigInteger(scanner.next());
  18. switch(op){
  19. case "+":
  20. big_a = big_a.add(big_b);
  21. break;
  22. case "-":
  23. big_a = big_a.add(big_b.negate());
  24. break;
  25. case "*":
  26. big_a = big_a.multiply(big_b);
  27. break;
  28. case "/":
  29. big_a = big_a.divide(big_b);
  30. break;
  31. }
  32.  
  33. System.out.println(big_a);
  34. }
  35. }
  36. }

沒有留言:

張貼留言