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. PHP-7.1 源代码学习:字节码在 Zend 虚拟机中的解释执行 之 概述

    本文简要介绍 zend 虚拟机解释执行字节码的基本逻辑以及相关的数据结构,关于 PHP 源代码的下载,编译,调试可以参考之前的系列文章 execute_ex 我们来看看执行一个简单的脚本 test.p ...

  2. Thanks for your encourage!

    将近三个月的学习,我的努力换回了代表荣誉的小黄衫,这令我很开心啊...我想是不是要写点什么来表达自己的心情呢=,=  于是就有了以下文字ahhhhhh... 学习心得: (1)学习中总会有失败和成功, ...

  3. xtrabackup: error: last checkpoint LSN (3409281307) is larger than last copied LSN (3409274368). #2

    1.错误发生场景:使用2.4.1版本的xtrabackup工具进行全备,备份日志中报出此错误2.知识要点:MySQL中,redo 日志写进程会在三种条件下被触发从log buffer中写日志到redo ...

  4. Spring 依赖注入(一、注入方式)

    首先装配一个实体类People package com.maya.model; public class People { private int id; private String name; p ...

  5. Welcome-to-Swift-19类型嵌套(Nested Types)

    枚举类型常被用于实现特定类或结构体的功能.也能够在有多种变量类型的环境中,方便地定义通用类或结构体来使用,为了实现这种功能,Swift允许你定义类型嵌套,可以在枚举类型.类和结构体中定义支持嵌套的类型 ...

  6. HDU——4291A Short problem(矩阵快速幂+循环节)

    A Short problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  7. Keepalived+NFS+SHELL脚本实现NFS-HA高可用

    本来想做DRBD+HEARTBEAT,但是领导说再加硬盘浪费资源,没有必要,而且在已有硬盘上做风险较大,所以就只能用rsync来实现数据同步了,实验中发现很多的坑,都用脚本和计划任务给填上了,打算把这 ...

  8. Gcd(bzoj 2818)

    Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sam ...

  9. 线段树懒标记好题 HDU4578

    (1)"1 x y c",代表 把区间 [x,y] 上的值全部加c (2)"2 x y c",代表 把区间 [x,y] 上的值全部乘以c (3)"3 ...

  10. jQuery控件之分页控件-- kkpager v1.3使用简介

    js分页展示控件,传入简单参数就能使用的分页效果控件 在线测试链接: http://pgkk.github.io/kkpager/example/pager_test.html http://pgkk ...