Java大数的使用

来源:互联网 发布:spycall软件多少钱 编辑:程序博客网 时间:2024/06/05 09:31

参考飘过的小牛的博客,练习NYOJ的Java大数题目,主要是为了熟悉一下Java语言。(都快算抄袭了,,,)

Java中的运算符和常用方法的使用——链接

NYOJ 28 大数阶乘

import java.math.BigInteger;import java.util.Scanner;public class Main{public static void main(String []args){Scanner in = new Scanner(System.in);int n = in.nextInt();BigInteger ans = BigInteger.ONE;for(int i = 1;i <= n;i++)ans = ans.multiply(BigInteger.valueOf(i));System.out.println(ans);}}


NYOJ 45 棋盘覆盖

  这个棋盘是正方形的,去掉一个格子以后,恰好可以用图2全部覆盖(这个的原因未知),所以棋盘的格子总数 4^k - 1  除以3  就是结果了。

  即(4^k - 1) / 3

import java.math.BigInteger;import java.util.Scanner;public class Main{public static void main(String []args){Scanner in = new Scanner(System.in);int t = in.nextInt(),k;while(t-- > 0){k = in.nextInt();BigInteger ans = new BigInteger("4");for(int i = 1;i <= k-1;i++)ans = ans.multiply(BigInteger.valueOf(4));System.out.println(ans.subtract(BigInteger.valueOf(1)).divide(BigInteger.valueOf(3)));}}}

NYOJ 73 比大小

import java.math.BigInteger;import java.util.Scanner;public class Main{public static void main(String []args){Scanner in = new Scanner(System.in);while(in.hasNext()){BigInteger a = in.nextBigInteger();BigInteger b = in.nextBigInteger();if(a.equals(BigInteger.ZERO) && b.equals(BigInteger.ZERO))                  break;int flag = a.compareTo(b);if(flag == -1)System.out.println("a<b");else if(flag == 1)System.out.println("a>b");elseSystem.out.println("a==b");}}}

NYOJ 103 A+B Problem II

import java.math.BigInteger;import java.util.Scanner;public class Main{public static void main(String []args){Scanner in = new Scanner(System.in);int t = in.nextInt();for(int ca = 1;ca <= t;ca++){BigInteger a = in.nextBigInteger();BigInteger b = in.nextBigInteger();BigInteger sum = a.add(b);System.out.println("Case " + ca + ":");System.out.println(a+ " + " +b + " = " +sum);}}}

NYOJ 114 某种序列

import java.math.BigInteger;import java.util.Scanner;public class Main{public static void main(String []args){Scanner in = new Scanner(System.in);BigInteger [] a = new BigInteger[105];while(in.hasNext())//多组数据{for(int i = 0;i < 3;i++)a[i] = in.nextBigInteger();for(int i = 3;i <= 99;i++)a[i] = a[i-1].add(a[i-2]).add(a[i-3]);System.out.println(a[99]);}}}

NYOJ 155 求高精度幂

import java.math.BigDecimal;import java.util.Scanner;public class Main{public static void main(String []args){Scanner in = new Scanner(System.in);while(in.hasNext()){BigDecimal R = in.nextBigDecimal();int n = in.nextInt();String str = R.pow(n).stripTrailingZeros().toPlainString();//去掉小数点后的0if(str.startsWith("0"))str = str.substring(1);System.out.println(str);}}}//Java帅呆了,自动补头文件啊//然而多个BigInteger的头

NYOJ 513 A+B Problem IV

import java.math.BigDecimal;import java.util.Scanner;public class Main{public static void main(String []args){Scanner in = new Scanner(System.in);BigDecimal esp = new BigDecimal("0.0");while(in.hasNext())          {              BigDecimal a = in.nextBigDecimal();              BigDecimal b = in.nextBigDecimal();            String str = a.add(b).stripTrailingZeros().toPlainString();//去掉小数点后的0              BigDecimal sum = a.add(b);            if(sum.compareTo(esp) == 0)              System.out.println(0);            else            System.out.println(str);          }}}

524 A-B

import java.math.BigDecimal;import java.util.Scanner;public class Main {public static void main(String [] args){Scanner in = new Scanner(System.in);while(in.hasNext()){BigDecimal a = in.nextBigDecimal();BigDecimal b = in.nextBigDecimal();BigDecimal c = a.subtract(b);String str = c.stripTrailingZeros().toPlainString();//去掉小数点后的0if(str.startsWith("0"))System.out.println("YES");elseSystem.out.println("NO");}}}

803 A/B

import java.math.BigInteger;import java.util.Scanner;public class Main {public static void main(String [] args){Scanner in = new Scanner(System.in);BigInteger a,b,c;String s;while(in.hasNext()){a = in.nextBigInteger();s = in.next();b = in.nextBigInteger();if(s.charAt(0) == '/')c = a.divide(b);elsec = a.remainder(b);System.out.println(c);}}}


0 0