zoukankan      html  css  js  c++  java
  • java实现大数加法、乘法(BigDecimal)

    之前写过用vector、string实现大数加法,现在用java的BigDecimal类,代码简单很多。但是在online-judge上,java的代码运行时间和内存大得多。

    java大数加法:求a+b

    import java.util.*;
    import java.io.*;
    import java.lang.String;
    import java.math.BigDecimal;
    
    public class p1036
    {
        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();
        }
    }
            

    用这个类,乘除法也很简单,不管是整形还是float,详见http://docs.oracle.com/javase/7/docs/api/ 。

    测试输入:

    130618656970218663498347545006237201871512019139119220715666434

    305161091397192795974451967699240485213039650461566304271331231

    421952713061865697021866349834754500623720187151201913911922071

    566643430516109139719279597445196769924048521303965046156630427

    13312314219527

    130618656970218663498347545006237201871512019139119220715666434

    305161091397192795974451967699240485213039650461566304271331231

    421952713061865697021866349834754500623720187151201913911922071

    566643430516109139719279597445196769924048521303965046156630427

    13312314219527

    输出:

    261237313940437326996695090012474403743024038278238441431332868

    610322182794385591948903935398480970426079300923132608542662462

    843905426123731394043732699669509001247440374302403827823844143

    133286861032218279438559194890393539848097042607930092313260854

    26624628439054

    java大数乘法:求2^(n+1)-1

    import java.util.*;
    import java.io.*;
    import java.math.BigDecimal;
    
    //2^(n+1)-1
    public class Main
    {
        public static void main(String[] args)
        {
            BigDecimal b;
            BigDecimal diff=new BigDecimal(-1);
            int n;
            Scanner cin = new Scanner(System.in);
            while(cin.hasNext())
            {
                n = cin.nextInt();
                b=new BigDecimal(2);
                b=b.pow(n+1);
                System.out.println((b.add(diff)).toString());
            }
        }
    }
  • 相关阅读:
    c++内存管理5-虚拟内存4区结构图
    C++内存管理5-处理new分配内存失败情况(转)
    C++内存管理4-Windows编程中的堆管理(转)
    C++内存管理3-探讨C++内存和回收
    C++内存管理2-内存泄漏
    VS2015远程调试
    C++内存管理1-64位系统运行32位软件会占用更多的内存吗?
    ffmpeg安装步骤
    golang字符串拼接
    如何严格设置php中session过期时间
  • 原文地址:https://www.cnblogs.com/duanguyuan/p/3368275.html
Copyright © 2011-2022 走看看