JAVA 大数运算模板 ACM竞赛必备

Ⅰ基本函数:

1.valueOf(parament); 将参数转换为制定的类型

比如 int a=3;

BigInteger b=BigInteger.valueOf(a);

则b=3;

String s=”12345”;

BigInteger c=BigInteger.valueOf(s);

则c=12345;

 

1.赋值:

BigInteger a=new BigInteger("1");

BigInteger b=BigInteger.valueOf(1);

2.运算:

① add(); 大整数相加 
BigInteger a=new BigInteger(“23”); 
BigInteger b=new BigInteger(“34”); 
a. add(b);

②subtract(); 相减 
③multiply(); 相乘 
④divide(); 相除取整 
⑤remainder(); 取余 
⑥pow(); a.pow(b)=a^b 
⑦gcd(); 最大公约数 
⑧abs(); 绝对值 
⑨negate(); 取反数 
⑩mod(); a.mod(b)=a%b=a.remainder(b); 

3.BigInteger构造函数: 
一般用到以下两种: 
BigInteger(String val); 
将指定字符串转换为十进制表示形式; 
BigInteger(String val,int radix); 
将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger 
4.基本常量: 
A=BigInteger.ONE 1 
B=BigInteger.TEN 10 
C=BigInteger.ZERO 0 

5.n.compareTo(BigInteger.ZERO)==0  //相当于n==0

6.if(a[i].compareTo(n)>=0 &&a[i].compareTo(m)<=0)   // a[i]>=n && a[i]<=m 

 

public class 大数计算 {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin = new Scanner(System.in);
BigInteger a, b;
while(cin.hasNext())//相当于c语言中的scanf("%d", &n) != EOF
{
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));//大整数取模

System.out.println(a.abs());//对大整数a取绝对值

int x = 0;
System.out.println(a.pow(x));//大整数a的x次幂

int y = 8;
System.out.println(a.toString(y));//返回大整数a的p进制用字符串表现的形式
System.out.println(a.toString());//返回大整数a的十进制用字符串表现的形式

//大整数之间的比较
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)



BigDecimal c, d;
c = cin.nextBigDecimal();
d = cin.nextBigDecimal();
System.out.println(c.add(d));//浮点数相加

System.out.println(c.subtract(d));//浮点数相减

System.out.println(c.multiply(d));//浮点数相乘

}
}
}

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值