大数模板(Java)

时间:2023-03-09 19:03:24
大数模板(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=;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)));
}
}

大数开方