Java中的BigInteger在ACM中的应用

在ACM中的做题时,常常会遇见一些大数的问题。这是当我们用C或是C++时就会认为比較麻烦。就想有没有现有的现有的能够直接调用的BigInter,那样就方便非常多啦。在java中就有的,所以在这儿我就做一个简要的介绍吧

—:在java中的基本头文件(java中叫包)

import java.io.*

importjava.util.*       我们所用的输入scanner在这个包中

importjava.math.*          我们以下要用到的BigInteger就这这个包中

二:输入与输出

读入 Scanner cin=new Scanner(System.in)

While(cin.hasNext())   //相当于C语言中的!

=EOF

n=cin.nextInt();       //输入一个int型整数

n=cin.nextBigInteger();   //输入一个大整数

System.out.print(n);      //输出n但不换行

System.out.println();     //换行

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

System.out.printf(“%d\n”,n);     //类似C语言中的输出

三:定义变量

定义单个变量:

int a,b,c;      //和C++ 中无差别

BigInteger  a;   //定义大数变量a

BigIntegerb=new BigInteger("2");   //定义大数变量 b赋值为 2;

BigDecimaln;     //定义大浮点数类 n;

定于数组:

int a[]= new int[10]   //定义长度为10的数组a

BigInteger  b[] =new BigInteger[100]   //定义长度为100的数组a

四:表示范围

布尔型 boolean 1 true,false false

字节型 byte 8 -128-127 0

字符型 char 16 ‘\u000’-\uffff ‘\u0000’

短整型 short 16 -32768-32767 0

整型 int 32 -2147483648,2147483647 0

长整型 long 64 -9.22E18,9.22E18 0

浮点型 float 32 1.4E-45-3.4028E+38 0.0

双精度型 double 64 4.9E-324,1.7977E+308 0.0

BigInteger随意大的数,原则上仅仅要你的计算机内存足够大。能够有无限位

五:经常使用的一些操作

A=BigInteger.ONE;   //把0赋给A

B=BigInteger.valueOf(3);    //把3赋给B。

A[i]=BigInteger.valueOf(10);    //把10赋给A[i]

c=a.add(b)        //把a与b相加并赋给c

c=a.subtract(b)   //把a与b相减并赋给c

c=a.multiply(b)   //把a与b相乘并赋给c

c=a.divide(b)     //把a与b相除并赋给c

c=a.mod(b)        // 相当于a%b

a.pow(b)          //相当于a^b

a.compareTo(b):      //依据该数值是小于、等于、或大于a 返回 -1、0 或 1;

a.equals(b):    //推断两数是否相等,也能够用compareTo来取代;

a.min(b),a.max(b):  //取两个数的较小、大者;

注意以上的操作都必须是BigInteger类的。

给以例子POJ  2506

代码:

import java.math.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
BigInteger a[] = new BigInteger[300];
BigInteger b=new BigInteger("2");
a[0]=BigInteger.valueOf(1);
a[1]=BigInteger.valueOf(1);
a[2]=BigInteger.valueOf(3);
a[3]=BigInteger.valueOf(5);
int n; for(int i=3;i<=255;i++)
{
a[i]=a[i-1].add(a[i-2].multiply(b));
}
while(cin.hasNext())
{
n=cin.nextInt();
System.out.println(a[n]);
}
}
}

Java中的BigInteger在ACM中的应用的更多相关文章

  1. Java在ACM中的应用

    Java在ACM中的应用 —. 在java中的基本头文件(java中叫包) import java.io.*; import java.util.*; //输入Scanner import java. ...

  2. ACM中Java的应用

    先说一下Java对于ACM的一些优点吧: (1) 对于熟悉C/C++的程序员来说Java 并不难学,两周时间基本可以搞定一般的编程,再用些时间了解一下Java库就行了.Java的语法和C++非常类似, ...

  3. [原创]浅谈JAVA在ACM中的应用

    由于java里面有一些东西比c/c++方便(尤其是大数据高精度问题,备受广大ACMer欢迎),所以就可以灵活运用这三种来实现编程,下面是我自己在各种大牛那里总结了一些,同时加上自己平时遇到的一些jav ...

  4. ACM中使用 JAVA v2. 1

    ACM中使用JAVA v2.1 严明超 (Blog:mingchaoyan.blogbus.com Email:mingchaoyan@gmail.com) 0.前 言 文前声明:本文只谈java用于 ...

  5. ACM中java的使用

    ACM中java的使用 转载自http://www.cnblogs.com/XBWer/archive/2012/06/24/2560532.html 这里指的java速成,只限于java语法,包括输 ...

  6. ACM 中JAVA的应用

    原文地址:http://www.cppblog.com/vontroy/archive/2010/05/24/116233.html 先说一下Java对于ACM的一些优点吧: (1) 对于熟悉C/C+ ...

  7. ACM中java的使用 (转)

    ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner ...

  8. java在acm中常用基础技巧方法

    java在acm中常用基础技巧方法 如果学到了新的技巧,本博客会更新~ input input-std @Frosero import java.util.*; public class Main { ...

  9. Java高精度学习第三弹——ACM中使用JAVA的详细介绍

    Chapter I. Java的优缺点各种书上都有,这里只说说用Java做ACM-ICPC的特点: (1) 最明显的好处是,学会Java,可以参加Java Challenge . (2) 对于熟悉C/ ...

随机推荐

  1. 4.Vim编辑器与Shell命令脚本

    第4章 Vim编辑器与Shell命令脚本 章节简述: 本章首先讲解如何使用Vim编辑器来编写.修改文档,然后通过逐个配置主机名称.系统网卡以及Yum软件仓库参数文件等实验,帮助读者加深Vim编辑器中诸 ...

  2. 解决MySQL版本之间造成的乱码、数据查询不出的问题

    在数据库连接字符串上加  charset=utf8 <connectionStrings> <add name="XJRDSModels" connectionS ...

  3. Thinkphp5 PDO操作mysql预处理中文字段出错问题

    Thinkphp5手册上建议不用中文表明和中文字段名 今天发现中文字出问题的地方了 $pdo = new PDO('mysql:host=localhost;dbname=xsfm_master', ...

  4. C++ ---->中include <iostream>和include <iostream.h>的区别

    简单来说: .h的是标准C的头文件,没有.h的是标准C++的头文件,两种都是头文件. 造成这两种形式不同的原因,是C++的发展历史决定的,刚才正好有别的人也问这个问题,这里我再回答一下(注意vs200 ...

  5. 用CSS给表格加边框

    很久之前,给表格加边框用的方法是给表格加上背景色,然后把cellspacing="1",再给td设置成另一种颜色,这样间接的加边框颜色. 一直没去细研究,今天发现了一种很简单的加边 ...

  6. [luoguP2763] 试题库问题(最大流)

    传送门 每个类别和它所有的试题连一条权值为1的边. 增加一个超级源点s,s和每个类别连一条权值为选当前类别数量的边. 增加一个超级汇点t,每个试题和t连一条权值为1的边. 求最大流即可. ——代码 # ...

  7. LibreOJ2044 - 「CQOI2016」手机号码

    Portal Description 给出两个十一位数\(L,R\),求\([L,R]\)内所有满足以下两个条件的数的个数. 出现至少\(3\)个相邻的相同数字: 不能同时出现\(4\)和\(8\). ...

  8. linux jenkins安装(四)

    Jenkins是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,包括:软件版本发布/测试的持续集成.外部调用执行工作的监控等. 1. Jenkins 下载 Jenkins 下载网址:htt ...

  9. 大规模SOA系统中的分布事务思考

    首先是不建议采用XA两阶段提交方式去处理分布式事务,要知道要能够支持XA分布式事务,必须是要实现XA规范才可以,而Service本身是无状态的,如果这样去做了等于是把Service内部的东西暴露了出去 ...

  10. 慕课 python 操作数据库

    test_connection import MySQLdb conn = MySQLdb.Connect( host = '127.0.0.1', port = 3306, user = '**** ...