Scanner cin = new Scanner(new BufferedInputStream(System.in));

这样定义Scanner类的对象读入数据可能会快一些!

参考这个博客继续补充内容:http://blog.csdn.net/lmyclever/article/details/6408980

1. 单元变量常用大数操作:

import java.util.Scanner;
import java.math.*; public class Main{ public static void main(String args[]){
Scanner cin= new Scanner(System.in);
//使用Sacnner类创建cin对象
BigInteger a, b;//创建大数对象
while(cin.hasNext()){
a=cin.nextBigInteger();
b=cin.nextBigInteger();
System.out.println("a+b="+a.add(b)); System.out.println("a-b="+a.subtract(b)); System.out.println("a*b="+a.multiply(b)); System.out.println("a/b="+a.divide(b)); System.out.println("a%b="+a.remainder(b)); if(a.compareTo(b)==0) //比较两数的大小
System.out.println("a==b");
else if(a.compareTo(b)>0)
System.out.println("a>b");
else
System.out.println("a<b"); System.out.println(a.abs());//取绝对值 int e=10;
System.out.println(a.pow(e));//求a^e System.out.println(a.toString()); //将大数a转字符串输出 int p=8;
System.out.println(a.toString(p)); //将大数a转换成p进制后 按字符串输出 }
}
}

2.java大数 实现递推公式:f[i]=f[i-1]+f[i-2]*2

import java.util.*;
import java.math.*; //导入类 public class Main{
static BigInteger[] ans; //定义全局变量
public static void main(String[] args){ Scanner reader=new Scanner(System.in);
//定义Scanner类对象 ans = new BigInteger[251]; //定义ans大数数组的大小 ans[0]=BigInteger.valueOf(1);//大数赋初值
ans[1]=BigInteger.valueOf(1);
ans[2]=BigInteger.valueOf(3);
for(int i=3; i<=250; i++)
{
ans[i] = ans[i-1].add(ans[i-2].multiply(BigInteger.valueOf(2)));
} //大数加法的使用
int n;
while(reader.hasNextInt()){
n=reader.nextInt();
System.out.println(ans[n]); //普通输出
}
}
}

3. HDOJ 1047 Integer Inquiry

 T组大数,每组数据输入直到0终止,计算刚才输入的数之和。数字会很大。

java code:(注意:BigInteger.ZERO 和 普通的0不同,这在java代码里面要体现出来 )

import java.util.Scanner;
import java.math.*; public class Main{ public static void main(String args[]){
Scanner cin = new Scanner(System.in);
int tg; tg=cin.nextInt(); while(tg>0){
BigInteger cur, sum;
sum=BigInteger.ZERO; //
while(cin.hasNext()){
cur=cin.nextBigInteger();
if(cur.equals(BigInteger.ZERO)) break; //判断是不是0
sum=sum.add(cur); //不断累加
}
System.out.println(sum);
if(tg!=1)
System.out.println();
tg--;
}
}
}

4.hdu 1753 大明A+B (两个超长的浮点类型数求和)使用java BigDecimal类 并且将结果转为字符串输出

code:

import java.util.Scanner;
import java.math.BigInteger;
import java.math.BigDecimal; public class Main{ public static void main(String args[]){
Scanner cin = new Scanner(System.in);
BigDecimal a, b, ans;
while(cin.hasNext()){
a=cin.nextBigDecimal();
b=cin.nextBigDecimal();
ans=a.add(b);
String s=ans.stripTrailingZeros().toPlainString();
System.out.println(s);
}
}
}

5.  HDU 1715  (java计算1000以内的斐波那契数列)

code:

package java_1;
import java.util.Scanner;
import java.math.BigInteger;
import java.math.BigDecimal; public class Main{ public static void main(String args[]){
Scanner cin = new Scanner(System.in);
BigInteger f[];
f=new BigInteger[1100]; f[1]=f[2]=BigInteger.valueOf(1);
for(int i=3; i<=1000; i++){
f[i]=f[i-1].add(f[i-2]);
} int tg; tg=cin.nextInt();
int n;
for(int i=0; i<tg; i++){
n=cin.nextInt();
System.out.println(f[n]);
}
}
}

6. HDU 1063 Exponentiation (计算一个a的b次方, a是一个长浮点数, b是整数)

输出时,如果结果是0.XXXXXX  这时候前面的0要忽略掉不输出。

代码:

import java.util.Scanner;
import java.math.BigDecimal;
import java.math.BigIntege; public class Main{ public static void main(String args[]){
Scanner cin = new Scanner(System.in); BigDecimal a, ans;
int n, i;
while(cin.hasNext()){
a=cin.nextBigDecimal();
n=cin.nextInt();
ans=BigDecimal.valueOf(1);
for(i=1; i<=n; i++)
ans=ans.multiply(a);
String s=ans.stripTrailingZeros().toPlainString();
if(s.startsWith("0."))//如果开头是0.XXX 从下标1开始输出
System.out.println(s.substring(1));
else
System.out.println(s);
}
}
}

7. java大数实现计算阶乘,本以为很简单,写起来之后却发现了不少自己的能力问题。

    (1)java BigInteger只能和大数的类型相运算,不能和int等进行运算。

    (2)强制类型装换:int先转换成String类型,在转换成BigInteger类型。

code:

import java.util.Scanner;
import java.math.BigDecimal;
import java.math.BigInteger; public class Main{ public static void main(String args[]){
Scanner cin = new Scanner(System.in); BigInteger ans;
ans=BigInteger.valueOf(1);
int n;
n=cin.nextInt(); for(int i=2; i<=n; i++){
String temp=Integer.toString(i);
BigInteger t=new BigInteger(temp);
ans = ans.multiply(t);
} System.out.println(ans);
}
}

8. HDU 4762 Cut the Cake

输出:n/( m^(n-1) ) ,  m^(n-1)是个大数,并且最后这个分式要化简。

import java.util.Scanner;
import java.math.BigInteger; public class Main{ public static void main(String args[]){ Scanner cin=new Scanner(System.in); int m, n;
int tg; tg=cin.nextInt();
for(int cnt=0; cnt<tg; cnt++){
m=cin.nextInt();
n=cin.nextInt();
String temp=Integer.toString(m);
BigInteger cur=new BigInteger(temp);
BigInteger ans=cur.pow(n-1);// temp=Integer.toString(n);
BigInteger nn=new BigInteger(temp);
if(nn.mod(ans).equals(BigInteger.valueOf(0))){
System.out.println(nn.divide(ans));
}
else{
System.out.print(nn.divide(ans.gcd(nn)) + "/");
System.out.println(ans.divide(ans.gcd(nn)));
}
}
}
}

【Java】-BigInteger大数类的使用【超强Java大数模板 总结】的更多相关文章

  1. java基础知识回顾之---java String final类 容易混淆的java String常量池内存分析

    /** *   栈(Stack) :存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放  在常量池中). 堆(heap):存 ...

  2. Java中Properties类

    1 简介: JDK提供的java.util.Properties类继承自Hashtable类并且实现了Map接口,用map来存储key-value数据,所以存入的数据是无序的.其中键和值都是字符串类型 ...

  3. 【JAVA零基础入门系列】Day11 Java中的类和对象

    今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...

  4. 【JAVA零基础入门系列】Day12 Java类的简单应用

    俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技. 今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务. 我们的商品类已经准备好了,代码重 ...

  5. 【JAVA零基础入门系列】Day13 Java类的继承与多态

    继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...

  6. Java的URL类(二)

    转:https://www.cnblogs.com/brokencolor/p/8575440.html Java的URL类(二) 实例: Java 通过HttpURLConnection Post方 ...

  7. Java的URL类(一)

    转:https://www.cnblogs.com/blackiesong/p/6182038.html Java的URL类(一) Java的网络类可以让你通过网络或者远程连接来实现应用.而且,这个平 ...

  8. java日期工具类DateUtil-续二

    该版本是一次较大的升级,农历相比公历复杂太多(真佩服古人的智慧),虽然有规律,但涉及到的取舍.近似的感念太多,况且本身的概念就已经很多了,我在网上也是查阅了很多的资料,虽然找到一些计算的方法,但都有些 ...

  9. java继承2——类与继承(转)

    一.你了解类吗? 在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在pu ...

  10. [19/03/12-星期二] 数组_遍历(for-each)&复制&java.util.Arrays类

    一.遍历 for-each即增强for循环,是JDK1.5新增加的功能,专门用于读取数组或集合中所有的元素,即对数组进行遍历. //数组遍历 for-each public class Test_03 ...

随机推荐

  1. jQuery的$.fn使用

    jquery中文网为您提供jQuery的$.fn使用等资源,欢迎您收藏本站,我们将为您提供最新的jQuery的$.fn使用资源 $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jque ...

  2. Ansible@一个高效的配置管理工具--Ansible configure management--翻译(五)

    无书面许可请勿转载 高级Playbook Extra variables You may have seen in our template example in the previous chapt ...

  3. java数字签名算法之RSA

    © 版权声明:本文为博主原创文章,转载请注明出处 实例 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0 ...

  4. java web 通配符* ? $1 $2 $3

    匹配通配符 * 匹配0-n个字符,但不包括“/”.即,“*”只匹配一级目录或文件中的零个或多个字符. ** 匹配0-n个字符,包括“/”.即,“**”匹配多级目录或文件. ? 匹配0-1个字符,但不包 ...

  5. CSRF--花式绕过Referer技巧

    CSRF遇到Referer绕过的情况,有条件限制,不一定所有的Refere验证就可以绕过 1.Refere为空条件下 解决方案: 利用ftp://,http://,https://,file://,j ...

  6. Sublime Text3 运行python(转)

    From:http://blog.csdn.net/hun__ter/article/details/51223031 安装sublime text3后,按Ctrl+b无法运行python文件. 解决 ...

  7. 【转】python测试开发面试题

    出处:http://my.oschina.net/u/1433482/blog/467954?fromerr=WrfxL2Kw 试卷时间 60分钟,请不要在试卷上作答,用A4纸做答题纸作答. 一,中文 ...

  8. Linux3_文件系统

    1.Linux发行版本之间的差别很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不同.目录结构基本上都是一样的. Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区), ...

  9. linux 改动时间和日期date

    查看日期和时间 date 改动日期 date -s 月/日/年 date -s 08/15/2015 改动时间 date -s 09:29:33 写入CMOS sudo clock -w 利用ssh同 ...

  10. 并行编程(2) - sum.msic.Unsafe 二

    整理了几个曾经从网上记录sum.msic.Unsafe类的演示样例.供大家參考: package com.fish.unsafe; import java.io.File; import java.i ...