大数模板(Java)

大数加法

/*
给出2个大整数A,B,计算A+B的结果。

Input
第1行:大数A
第2行:大数B
(A,B的长度 <= 10000 需注意:A B有可能为负数)

Output
输出A + B

Input示例
68932147586
468711654886

Output示例
537643802472

*/
import java.util.*;
import java.io.*;
import java.lang.String;
import java.math.BigDecimal;
 
public class pp
{
    public static void main(String[] args)
    {
        String s1,s2;
        Scanner cin = new Scanner(System.in);        
        s1 = cin.next();
        s2 = cin.next();
        BigDecimal b1 = new BigDecimal(s1);
        BigDecimal b2 = new BigDecimal(s2);
        System.out.println(b1.add(b2));
        cin.close();
    }
}
大数加法-656ms/1s

 

a=int(input())
b=int(input())
print(a+b)
py2-78ms/1s

 

大数乘法

/*
给出2个大整数A,B,计算A*B的结果。

Input
第1行:大数A
第2行:大数B
(A,B的长度 <= 1000,A,B >= 0)

Output
输出A * B

Input示例
123456
234567

Output示例
28958703552

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

public class pp
{
    public static void main(String[] args)
    {
        Scanner in=new Scanner(System.in);
        BigInteger a,b;
        a=in.nextBigInteger();
        b=in.nextBigInteger();
        System.out.println(a.multiply(b));
    }
}
大数乘法-4515ms/6000

 

A=int(raw_input())
B=int(raw_input())
print A*B
py2-2578ms

 

N的阶乘

 

/*
输入N求N的阶乘的准确值。

Input
输入N(1 <= N <= 10000)

Output
输出N的阶乘

Input示例
5
Output示例
120
*/
import java.math.BigInteger;
import java.util.Scanner;

public class  pp{
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        BigInteger sum=BigInteger.ONE;
        int n;
        n=in.nextInt();
        for(int i=1;i<=n;i++)
            sum=sum.multiply(BigInteger.valueOf(i));
        System.out.println(sum);
    }
}
N的阶乘

 

 

 

 

大数除法+取模

/*
给出2个大整数A,B,计算A / B和A Mod B的结果。

Input
第1行:大数A
第2行:大数B
(A,B的长度 <= 100000,A,B >= 0)
 
Output
第1行:A / B
第2行:A Mod B (A % B)
 
Input示例
987654321
1234

Output示例
800368
209
*/
//2750 ms/4s

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

public class pp{
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        BigInteger  a,b;
        a=in.nextBigInteger();
        b=in.nextBigInteger();
        System.out.println(a.divide(b));
        System.out.println(a.mod(b));
    }
}
大数除法+取模

 

大数进制转换

/*
给出一个36进制的大数(0-9,A-Z),将其转为10进制并输出。

Input
输入:36进制的大数,每一位用0-9,A-Z来表示,A表示10,Z表示35。(A的长度 <= 100000)

Output
输出:该数的10进制表示

Input示例
1AZ

Output示例
1691
*/
//3765 ms/3s
import java.io.BufferedInputStream;
import java.math.BigInteger;
import java.util.Scanner;

public class Main {

    
    static boolean checkeNumber(char a)
    {
        return a>='0'&&a<='9';
    }
    
    public static void main(String[] args) {
        Scanner cin=new Scanner(new BufferedInputStream(System.in));
        String str=cin.next();
        BigInteger b=new BigInteger(str,36);

        System.out.println(b);
        
    }

}
大数36->10进制

 

大数开方

package Demo;
/*

现在给你两个数 n 和 p ,让你求出 p的开 n 次方。
输入
每组数据包含两个数n和p。当n和p都为0时表示输入结束。(1<=n<=200,1<=p<=10^101)
输出
对于每个输出对用输出开方后的结果k(结果小于10^9)。

样例输入
2 16
3 27
7 4357186184021382204544

样例输出
4
3
1234
//112ms/300
*/

import java.util.Scanner;
    public class Demo{
        public static void main(String[] args){  
            Scanner input=new Scanner(System.in);  
                int n=input.nextInt();  
                double p=input.nextDouble();  
                System.out.println(String.format("%.0f", Math.pow(p, 1.0/n)));  
            }  
        }  
    
大数开方

 

posted @ 2017-10-06 19:03  Roni_i  阅读(307)  评论(0编辑  收藏  举报