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)));
}
}
}
}

最新文章

  1. JavaScript数组
  2. 7_nodejs angularjs
  3. HDU-1203(01背包)
  4. B+树的特点
  5. 花40分钟写一个-CBIR引擎-代码公开
  6. Android软键盘弹出时把布局顶上去的解决方法
  7. 【原】Spark数据本地性
  8. 错误ERROR datanode.DataNode (DataXceiver.java:run(278)) - hadoop07:50010DataXceiver error processing unknown operation src:127.0.0.136479 dst:127.0.0.150010
  9. centOS上安装redis
  10. Lintcode--010(最长上升子序列)
  11. Python核心编程笔记--随机数
  12. nefu 462 fib组合
  13. Bootstrap 模态对话框只加载一次 remote 数据的解决办法 转载
  14. java字符串,包,数组及空心正方形,菱形的实例
  15. Day-6: 函数式编程
  16. Kudu存储实战笔记
  17. C语言之选择排序
  18. 解决sqlite 删除记录后数据库文件大小不变
  19. 修复UEFI模式下Manjaro Linux启动问题
  20. 关于display的属性:block和inline-block以及inline的区别,float相关说明

热门文章

  1. IBM Rational AppScan使用详细说明
  2. Python script to create Screen from all Items/Graphs of a host
  3. Eureka 源码编译安装部署---Eureka运行eureka-server服务
  4. lua学习笔记(十)
  5. 事件驱动模型实例详解(Java篇)
  6. 从Java视角理解CPU缓存和伪共享
  7. 50 years of Computer Architecture: From the Mainframe CPU to the Domain-Specific TPU and the Open RISC-V Instruction Set
  8. jfreechart时序图 demo
  9. Android Studio 使用笔记:记录使用Gradle配置AndroidAnnotations
  10. yum 无法安装mysql