JAVA大数

大数阶乘

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=28

代码如下:

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

棋盘覆盖

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=45

代码如下:

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

比较大小

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=73

代码如下:

import java.io.*;  
import java.math.BigInteger;  
import java.util.*;  
  
public class Main  
{  
    public static void main(String args[])  
    {  
        Scanner cin = new Scanner(System.in);     
        while(cin.hasNext())  
        {  
            BigInteger a = cin.nextBigInteger();  
            BigInteger b = cin.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 == 0)  
                System.out.println("a==b");  
            else  
                System.out.println("a>b");  
        }  
    }  
}  

大数加法

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=103

代码如下:

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

递推求值

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=114

代码如下:

import java.io.*;  
import java.math.BigInteger;  
import java.util.*;  
  
public class Main  
{  
    public static void main(String args[])  
    {  
        Scanner cin = new Scanner(System.in);     
        BigInteger a[] = new BigInteger[100];  
        while(cin.hasNext())  
        {  
            for(int i = 0; i <= 2; ++i)  
                a[i] = cin.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]);  
        }  
    }  
}  

高精度幂

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=155

代码如下:

import java.io.*;  
import java.math.BigDecimal;  
import java.util.*;  
  
public class Main  
{  
    public static void main(String args[])  
    {  
        Scanner cin = new Scanner(System.in);     
        while(cin.hasNext())  
        {  
            BigDecimal ans = cin.nextBigDecimal();  
            int n = cin.nextInt();  
            String res = ans.pow(n).stripTrailingZeros().toPlainString(); //整数去掉小数点和后面的0  
            if(res.startsWith("0")) //去掉前导0  
            {  
                res = res.substring(1);  
            }  
            System.out.println(res);  
        }  
    }  
}  

大数运算:

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));
       }
    }
}


大数:

java大数(2013长春网络赛)--hdu4762
总结一下:
1.java提交类要写Main。
2.读取大数。

1 Scanner read=new Scanner(System.in);  
2 BigInteger m;  
3 m=read.nextBigInteger(); 

3.基本类型转化成大数。

1 BigInteger q=BigInteger.valueOf(n);

4.大数最大公约数:

1 BigInteger a=p.gcd(q);  

5.finally函数只能写在try-catch后面

复制代码
 1 import java.math.*;
 2 import java.util.*;
 3 public class Main {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         // TODO Auto-generated method stub
10         Scanner read=new Scanner(System.in);
11         try{
12         int t;
13         BigInteger m;
14         int n;
15         t=read.nextInt();
16         while(t-->0){
17             m=read.nextBigInteger();
18             n=read.nextInt();
19             BigInteger p=m.pow(n-1);
20             BigInteger q=BigInteger.valueOf(n);
21             BigInteger a=p.gcd(q);
22             System.out.println(q.divide(a)+"/"+p.divide(a));
23             }
24         }
25         finally{
26             read.close();
27         }
28         
29     }    
30 }
复制代码




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值