大数问题,通常用JAVA
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]);
} }
}
分析(转):
简单递推+大数。
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)
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的更多相关文章
- 算法竞赛中的常用JAVA API :大数类(转载)
5.算法竞赛中的常用JAVA API :大数类 摘要 java中的基础数据类型能存储的最大的二进制数是 2 ^ 63 - 1 对应的十进制数是9223372036854775807(long类型的最大 ...
- 8.算法竞赛中的常用JAVA API :Calendar日期类
8.算法竞赛中的常用JAVA API :Calendar日期类 摘要 在蓝桥杯中有关于日期计算的问题,正好java中的Date类和Calendar类提供了对日期处理的一些方法.Date类大部分方法已经 ...
- 常用 Java 静态代码分析工具的分析与比较
常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...
- 常用Java排序算法
常用Java排序算法 冒泡排序 .选择排序.快速排序 package com.javaee.corejava; public class DataSort { public DataSort() { ...
- 【转载】常用 Java 静态代码分析工具的分析与比较
摘自:http://www.oschina.net/question/129540_23043常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后 ...
- LSM Tree 学习笔记——MemTable通常用 SkipList 来实现
最近发现很多数据库都使用了 LSM Tree 的存储模型,包括 LevelDB,HBase,Google BigTable,Cassandra,InfluxDB 等.之前还没有留意这么设计的原因,最近 ...
- 常用Java API之Ramdom--用代码模拟猜数小游戏
常用Java API之Ramdom Ramdom类用来生成随机数字.使用起来也是三个步骤: 1.导包 import java.util.Random; 2.创建 Random r = new Rand ...
- 常用Java API之Scanner:功能与使用方法
Scanner 常用Java API之Scanner:功能与使用方法 Scanner类的功能:可以实现键盘输入数据到程序当中. 引用类型的一般使用步骤:(Scanner是引用类型的) 1.导包 imp ...
- 6个常用Java 源代码 保护工具(混淆、加密、底层)
6个常用Java 源代码 保护工具(混淆.加密.底层) ProGuard Java源代码保护工具ProGuard的3.6与4.1版 下载地址:http://download.csdn.net/sou ...
随机推荐
- 6.JAVA知识点归纳整理
一.jdk初识与HelloWord: 二.java基础: 2.1 标识符_关键字_数据类型 2.2 数据类型转换 2.3 程序编写格式 2.4 运算符 2.5 分支与for循环 2.6 while_b ...
- jpa Specification复杂查询
public List<Receipts> test(List<String> costIds){ Specification<Receipts> specific ...
- 掘金 Android 文章精选合集
掘金 Android 文章精选合集 掘金官方 关注 2017.07.10 16:42* 字数 175276 阅读 50053评论 13喜欢 669 用两张图告诉你,为什么你的 App 会卡顿? - A ...
- jmeter多用户登录跨线程组操作传值
项目需求: 需要登录两个用户A.B,用户A操作完后会通知B,然后B再操作,B操作完结束或者再通知A. 实现思路: 1. 设置两个线程组Ⅰ.Ⅱ,组Ⅰ添加cookie管理器,里面添加用户A的操作:组Ⅱ添加 ...
- dom知识总结
一.dom节点的关系及遍历 element.firstChild; 如果节点为已知节点的第一个子节点就可以使用这个方法.此方法可以递归进行使用 element.firstChild.firstChil ...
- 商业地产 招商 招租 CRM 意向 洽谈 合同 复用商铺商户管理系统
适用场合 本软件适合商业地产的对招商的全流程管理,包括商铺信息,商户信息,洽谈信息,意向签订,合同管理等. 软件有试用版可供下载试用. 联系方式 QQ:2417158658 Tel:130251102 ...
- 【翻译】ASP.NET Core 文档目录
微软官方CORE 2.0正式版中文文档已经出来了,地址:https://docs.microsoft.com/zh-cn/aspnet/core/ 简介 入门 创建一个Web应用程序 创建一个Web ...
- lintcode-118-不同的子序列
118-不同的子序列 给出字符串S和字符串T,计算S的不同的子序列中T出现的个数. 子序列字符串是原始字符串通过删除一些(或零个)产生的一个新的字符串,并且对剩下的字符的相对位置没有影响.(比如,&q ...
- Jquery 跨域请求JSON数据问题
制作网站时,我们有时候为了方便快捷会调用别人写好的API接口,或者是调用一些免费的API接口获得JSON数据.比如天气,农历,网站备案信息查询等. 但是,这些API接口都是别人自己服务器上的,我们要调 ...
- JavaScript中常用转义字符
\b 退格 \f 换页 \r 回车 \n 换行 \" 双引号 \' 单引号 \t Tab字符 \\ 反斜杠 \xnn 十六进制代码nn表示的字符 \unnnn 十 ...