zoukankan      html  css  js  c++  java
  • JAVA 大数在acm中的应用

    转载自:海克斯科技门

    1.首先,需要的头文件:

    import java.math.*; // 包含大数类的包 
    
    import java.util.*;  // 包含输入头的包
    

    2.然后一个java程序的主体应该是这样:

    public class Main{
             public static void main(String args[]){
                  Scanner cin = new Scanner(System.in);        // 输入必备句
             }
    }
    3.与c/c++进行对比:

    while(n-->0)      // 等价 while(n--) n减到0


    EOF:用法
    普通的数: while(cin.hasNextInt())               //等同于!=EOF,第一数一定要输入整形的
    大数的一般是:while(cin.hasNextBigInteger())  //第一个数一定要输入大数
    System.out.print(m.toString());                       //  m.toString()  将m转为String 类   


    System.out.print(n);  // 输出n
    System.out.println(n);// 输出n并换行


    System.out.println("Case#"+(t++)+":"+" "+c.toString(2));   //t为int  c为大数  输出时字符与字符之间用+隔开   字符与字符之间有数据 在数据两边都加上+
    换行符  System.out.print(" ");或 System.out.println();
    输出空格  System.out.print(" ");

    4.下面集合了很多大数的用法:

    运算类:

    //d为int型,a,b,c都为大数
    c=a.add(b);             //  相加
    c=a.subtract(b);       //    相减
    c=a.multiply(b);          // 相乘
    c=a.divide(b);        // 相除取整
    c=a.gcd(b);          //  最大公约数
    c=a.remainder(b);   //  取余
    c=a.mod(b);         // a mod b
    c=a.abs();           // a的绝对值
    c=a.negate();        // a的相反数
    c=a.pow(d);           // a的b次幂        d为int型    
    c=a.max(b);           //  取a,b中较大的
    c=a.min(b);                //  取a,b中较小的
    d=a.compareTo(b);      //  比较a与b的大小   d=-1小于 d=0等于 d=1大于  d为int型
    a.equals(b);            //  判断a与b是否相等    相等返回true  不相等返回false  

    5.类型转换类:

    d=a.intValue();      //       将大数a转换为 int 类型赋值给 d
    e=a.longValue();     //       将大数a转换为  long 类型赋值给 e
    f=a.floatValue();    //       将大数a转换为  float 类型赋值给 f
    g=a.doubleValue();   //       将大数a转换为  double 类型赋值给 g
    s=a.toString();      //     将大数a转换为 String 类型赋值给 s
    <span style="color:#ff0000;">s=a.toPlainString();  //将大数a转换为String类型赋值给s,且不表示为科学计数法</span>
    a=BigInteger.valueOf(e);  // 将 e 以大数形式赋值给大数 a   e只能为long或int
    a=newBigInteger(s, d);  // 将s数字字符串以d进制赋值给大数a如果d=s字符数字的进制则等同于将数字字符串以大数形式赋值给大数a       
    

    6.进制转换类

    String st = Integer.toString(num, base); //把int型num当10进制的数转成base进制数存入st中    (base <= 35).
    int num = Integer.parseInt(st, base); //把st当做base进制,转成10进制的int
    (parseInt有两个参数,第一个为要转的字符串,第二个为说明是什么进制).  
    BigInter m = new BigInteger(st, base); // st是字符串,base是st的进制.
    BigInteger a;
    int b;
    Stringc;
    a=cin.nextBigInteger(b);   //以b进制读入一个大数赋值给a
    c=a.toString(b);          // 将大数a以b进制的方式赋给字符串c
    a=newBigInteger(c, b);  //把c 当做“b进制“转为十进制大数赋值给a
    


  • 相关阅读:
    GNU软件FTP下载汇总
    设置git的代理服务器
    今天发现一个Convert.ToDateTime的异常,算不算微软的bug呢?
    无线电空间传输损耗衰减计算(转帖)
    使用ArcGis10.2通过Dem提取山顶点(原创)
    VC++编译zlib
    VC++编译libpng
    vc++编译libtiff4.0.4
    VC++编译GSL
    libCEF总结02字符串
  • 原文地址:https://www.cnblogs.com/vocaloid01/p/9514116.html
Copyright © 2011-2022 走看看