Java大数

Posted upc201713

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java大数相关的知识,希望对你有一定的参考价值。

转自:https://www.cnblogs.com/zufezzt/p/4794271.html

 

import java.util.*;
import java.math.*;
public class Main{
    public static void main(String args[]){
       Scanner cin = new Scanner(System.in);
       BigInteger a, b;
      
       //以文件EOF结束
       while (cin.hasNext()){
           a = cin.nextBigInteger();
           b = cin.nextBigInteger();
          
           System.out.println(a.add(b)); //大整数加法
           System.out.println(a.subtract(b)); //大整数减法
           System.out.println(a.multiply(b)); //大整数乘法
           System.out.println(a.divide(b)); //大整数除法(取整)
           System.out.println(a.remainder(b)); //大整数取模
          
           //大整数的比较
           if( a.compareTo(b) == 0 ) System.out.println("a == b"); //大整数a==b
           else if( a.compareTo(b) > 0 ) System.out.println("a > b"); //大整数a>b
           else if( a.compareTo(b) < 0 ) System.out.println("a < b"); //大整数a<b
          
           //大整数绝对值
           System.out.println(a.abs()); //大整数a的绝对值
          
           //大整数的幂
           int exponent=10;
           System.out.println(a.pow(exponent)); //大整数a的exponent次幂
          
           //返回大整数十进制的字符串表示
           System.out.println(a.toString());
          
           //返回大整数p进制的字符串表示
           int p=8;
           System.out.println(a.toString(p));
       }
    }
}

 

 

转自:https://blog.csdn.net/morejarphone/article/details/51884888

HDU 1002

a+b大数版

 1 import java.math.BigInteger;
 2 import java.util.Scanner;
 3 
 4 public class Main {
 5     void solve () {
 6         BigInteger a, b, c;
 7         Scanner cin = new Scanner(System.in);
 8         int t = cin.nextInt ();
 9         for (int i = 1; i <= t; i++) {
10             System.out.println ("Case " + i + ":");
11             a = cin.nextBigInteger ();
12             b = cin.nextBigInteger ();
13             System.out.println (a + " + " + b + " = " + a.add (b));
14             if (i != t) System.out.println ();
15         }
16     }
17     public static void main (String[] args) {
18         Main work = new Main();
19         work.solve ();
20     }
21 }

 

HDU 1042

阶乘大数版

 1 import java.math.BigInteger;
 2 import java.util.Scanner;
 3 
 4 public class Main {
 5     int maxn = 10005;
 6     void solve () {
 7         Scanner cin = new Scanner(System.in);
 8         int n;
 9         while (cin.hasNext()) {
10             n = cin.nextInt ();
11             BigInteger ans = BigInteger.valueOf (1);
12             for (int i = 2; i <= n; i++) {
13                 ans = ans.multiply (BigInteger.valueOf (i));
14             }
15             System.out.println (ans);
16         }
17     }
18     public static void main (String[] args) {
19         Main work = new Main();
20         work.solve ();
21     }
22 }

 

HDU 1297

f(n)=f(n?1)+f(n?2)+f(n?4)f(n)=f(n?1)+f(n?2)+f(n?4)

import java.math.*;
import java.util.*;

public class Main {
    void solve () {
        Scanner cin = new Scanner(System.in);
        BigInteger[] ans = new BigInteger[1001];
        ans[1] = BigInteger.valueOf (1);
        ans[2] = BigInteger.valueOf (2);
        ans[3] = BigInteger.valueOf (4);
        ans[4] = BigInteger.valueOf (7);
        for (int i = 5; i <= 1000; i++) {
            ans[i] = ans[i-1].add (ans[i-2].add (ans[i-4]));
        }
        while (cin.hasNext ()) {
            int n = cin.nextInt ();
            System.out.println (ans[n]);
        }
    }
    public static void main (String[] args) {
        Main work = new Main();
        work.solve ();
    }
}

HDU 1753

高精度小数A+B,要去掉末尾的后导0.

import java.math.*;
import java.util.*;

public class Main {
    void solve () {
        //BigInteger a, b, c;
        Scanner cin = new Scanner(System.in);
        BigDecimal a = BigDecimal.valueOf (0);
        BigDecimal b = BigDecimal.valueOf (0);
        while (cin.hasNext ()) {
            a = cin.nextBigDecimal ();
            b = cin.nextBigDecimal ();
            System.out.println (a.add (b).stripTrailingZeros().toPlainString());
        }
    }
    public static void main (String[] args) {
        Main work = new Main();
        work.solve ();
    }
}

 

以上是关于Java大数的主要内容,如果未能解决你的问题,请参考以下文章

Java大数BigInteger-用法记录

java冒泡排序法代码

百度之星java大数+C++做法Strassen

JAVA大数贪心

Java实现字符串形式大数相加

java 如何创建一个类或方法能够给出指定位数的一个随机“大数”?