e.g.

HDU1002

简单加法

import java.math.BigInteger;
import java.util.Scanner; public class Main {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int t=cin.nextInt();
cin.nextLine();
int cnt=;
while(t!=)
{
t--;
String s1=cin.next();
String s2=cin.next();
BigInteger a1=new BigInteger(s1);
BigInteger a2=new BigInteger(s2);
System.out.println("Case "+(++cnt)+":");
System.out.print(a1+" + "+a2+" = ");
System.out.println(a1.add(a2));
if(t!=)
System.out.println();
} }
}

HDU1715 大斐波那契数

import java.math.BigInteger;
import java.util.Scanner; public class Main {
private static BigInteger[] fib;
public static void f(){
fib=new BigInteger[1005];
fib[2]=new BigInteger("1");
fib[1]=fib[2];
for(int i=3;i<1005;i++)
{
fib[i]=fib[i-1].add(fib[i-2]);
}
}
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int t=cin.nextInt();
cin.nextLine();
int cnt=0;
f();
while(t!=0)
{
t--;
cnt=cin.nextInt();
System.out.println(fib[cnt]);
} }
}

HDU1865

分析(转):

简单递推+大数。
    f[n]=f[n-1]+f[n-2]。

why?
    由于数字只有'1'和'2'这两种,那么当让第n
 位为1的时候,f[n]加上f[n-1];当让最后两位
 合并成2的时候,f[n]加上f[n-2](因为要保证
 倒数第二位一定是1)。

算出来的f就是一个斐波那契数列。

WOW ,问题转化是极为巧妙的

  这种递推关系,说的严重点就是动态规划

import java.math.BigInteger;
import java.util.Scanner; public class Main {
private static BigInteger[] fib;
public static void f(){
fib=new BigInteger[1005];
fib[1]=new BigInteger("1");
fib[0]=fib[1];
for(int i=2;i<1005;i++)
{
fib[i]=fib[i-1].add(fib[i-2]);
}
}
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int t=cin.nextInt();
cin.nextLine();
int cnt=0;
f();
while(t!=0)
{
t--;
String s=cin.next();
cnt=s.length();
System.out.println(fib[cnt]);
} }
}

HDU 1753 大明A+B(大小数加法,C模拟,Java BigDecimal)

c语言的话就是找到小数点后仿照大整数加法进行,但是有点麻烦,
如果用Java的BigDecimal的话瞬间变成水题,
但是要注意输出的格式,用stripTrailingZeros()方法除去末尾多余的0,
例如,若无此句,0.9+0.1的结果为1.0,而不是我们想要的1,
用toPlainString()方法则可以避免结果用科学计数法表示,
例如:若无此句,0.0000001+0.0000001的结果为2E-7而不是我们想要的0.0000002
import java.math.BigDecimal;
import java.util.Scanner; public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BigDecimal a,b;
while(sc.hasNext()){
a = sc.nextBigDecimal();
b = sc.nextBigDecimal();
System.out.println(a.add(b).stripTrailingZeros().toPlainString());
}
}
}

HDU1316

JAVA水题 暴力 BigInteger 大数

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner; public class Main {
private static BigInteger[] fib;
public static void f(){
fib=new BigInteger[1005];
fib[1]=new BigInteger("1");
fib[0]=fib[1];
for(int i=2;i<1005;i++)
{
fib[i]=fib[i-1].add(fib[i-2]);
}
}
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
BigInteger a1,a2;
f();
BigInteger dumy=BigInteger.ZERO;
while(cin.hasNextBigInteger())
{
a1=cin.nextBigInteger();
a2=cin.nextBigInteger();
if(a1.compareTo(dumy)==0&&a2.compareTo(dumy)==0){
break;
}
int cnt=0;
for(int i=1;i<1005;i++)
{
if(fib[i].compareTo(a2)>0)break;
if(fib[i].compareTo(a1)>=0&&fib[i].compareTo(a2)<=0){
cnt++;
}
}
System.out.println(cnt);
} } }

HDU1047

Integer Inquiry 大数加法

注意输出格式

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int n=cin.nextInt();
BigInteger d1,z=BigInteger.ZERO,sum;
while((n--)!=0)
{
sum=z;
while(cin.hasNextBigInteger())
{
d1=cin.nextBigInteger();
if(d1.equals(z)){
break;
}
sum=sum.add(d1);
}
System.out.println(sum);
if(n!=0){
System.out.println();
}
} }
}

HDU1063

大数的幂  

.stripTrailingZeros().toPlainString()
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
BigDecimal b1,ans,o=BigDecimal.ONE;
int n;
while(cin.hasNextBigDecimal())
{
b1=cin.nextBigDecimal();
n=cin.nextInt();
ans=o;
for(int i=0;i<n;i++)
{
ans=ans.multiply(b1);
}
if(b1.compareTo(o)<0)
System.out.println(ans.stripTrailingZeros().toPlainString().substring(1));
else
System.out.println(ans.stripTrailingZeros().toPlainString());
}
}

大数问题,通常用JAVA的更多相关文章

  1. 算法竞赛中的常用JAVA API :大数类(转载)

    5.算法竞赛中的常用JAVA API :大数类 摘要 java中的基础数据类型能存储的最大的二进制数是 2 ^ 63 - 1 对应的十进制数是9223372036854775807(long类型的最大 ...

  2. 8.算法竞赛中的常用JAVA API :Calendar日期类

    8.算法竞赛中的常用JAVA API :Calendar日期类 摘要 在蓝桥杯中有关于日期计算的问题,正好java中的Date类和Calendar类提供了对日期处理的一些方法.Date类大部分方法已经 ...

  3. 常用 Java 静态代码分析工具的分析与比较

    常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...

  4. 常用Java排序算法

    常用Java排序算法 冒泡排序 .选择排序.快速排序 package com.javaee.corejava; public class DataSort { public DataSort() { ...

  5. 【转载】常用 Java 静态代码分析工具的分析与比较

    摘自:http://www.oschina.net/question/129540_23043常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后 ...

  6. LSM Tree 学习笔记——MemTable通常用 SkipList 来实现

    最近发现很多数据库都使用了 LSM Tree 的存储模型,包括 LevelDB,HBase,Google BigTable,Cassandra,InfluxDB 等.之前还没有留意这么设计的原因,最近 ...

  7. 常用Java API之Ramdom--用代码模拟猜数小游戏

    常用Java API之Ramdom Ramdom类用来生成随机数字.使用起来也是三个步骤: 1.导包 import java.util.Random; 2.创建 Random r = new Rand ...

  8. 常用Java API之Scanner:功能与使用方法

    Scanner 常用Java API之Scanner:功能与使用方法 Scanner类的功能:可以实现键盘输入数据到程序当中. 引用类型的一般使用步骤:(Scanner是引用类型的) 1.导包 imp ...

  9. 6个常用Java 源代码 保护工具(混淆、加密、底层)

    6个常用Java 源代码 保护工具(混淆.加密.底层) ProGuard Java源代码保护工具ProGuard的3.6与4.1版  下载地址:http://download.csdn.net/sou ...

随机推荐

  1. ORB-SLAM 代码笔记(二)

    ORB-SLAM中除了第三方库,基本没有看到使用c++11的新特性(例如别的SLAM框架中常用的智能指针,拷贝控制,泛型算法等,基本没有使用动态内存,栈内存读取速度较快),因此非常适合初学,代码很清晰 ...

  2. spring boot 中文文档地址

    spring boot 中文文档地址     http://oopsguy.com/documents/springboot-docs/1.5.4/index.html Spring Boot 参考指 ...

  3. 使用IDEA快速搭建Gradle项目

  4. Git 使用 粗糙记录

    版本控制应该是每一个开发人员应该会的东西,奈何,学校没有学习,随着写代码的时间的加长,越来月觉得版本控制的必要性了. 记得在实习的公司,同一痛的都是SVN. 至于GIt和SVN的区别,直接看连接 ht ...

  5. github 初始化操作小记

     Git作为一种越来越重要的工具,github又如此流行,现在就简单记录一下git的基础操作,希望能帮助大家快速体验入门! 1 查看本地是否存在”公钥”和”私钥” 如果没有,则执行: ssh-keyg ...

  6. 梳理 Opengl ES 3.0 (三)顶点坐标变换

    先来个宏观上的理解: 其实这块逻辑是个标准流程,而且其他地方介绍的也很多了,这里简单提下. 坐标转换,其实是不同坐标系之间的变换,一个渲染顶点,要想让它呈现在屏幕上的某个位置,是需要让这个顶点经过一个 ...

  7. zabbix 语音告警

    之前的文章中已经实现了zabbix 邮件告警和微信告警,生产环境上测试出消息抵达很及时,但是!万一服务器在大半夜突发故障微信.邮件这些通知都是废物了,大晚上还能听到微信通知吗?显然不可能(我的某朋友就 ...

  8. AMR无限增发代币至任意以太坊地址的漏洞利用及修复过程

    AMR无限增发代币至任意以太坊地址的漏洞利用及修复过程 0x00 项目简述 Ammbr主要目标是打造具有高度弹性且易于连接的分布式宽带接入平台,同时降低上网相关成本.Ammbr打算创建具有人工智能和智 ...

  9. rcnn spp_net

    在http://www.cnblogs.com/jianyingzhou/p/4086578.html中 提到 rcnn开创性工作,但是计算时间太长,重复计算太大. spp_net将重复计算避免了 我 ...

  10. 最短路径——Floyd算法(含证明)

    通过dij,ford,spfa等算法可以快速的得到单源点的最短路径,如果想要得到图中任意两点之间的最短路径,当然可以选择做n遍的dij或是ford,但还有一个思维量较小的选择,就是floyd算法. 多 ...