java BigInteger,BigDecimal学习
2015-10-20 18:37
561 查看
java里的BigInteger和BigDecimal是很好的东东,很大程度上把人从高精度的编码中解脱了出来。
相关博客:
BigInteger:
http://blog.csdn.net/thearcticocean/article/details/49280645
BigDecimal:
http://www.apihome.cn/api/java/BigDecimal.html
一些练习:
nyist 73 比大小
http://acm.nyist.net/JudgeOnline/problem.php?pid=73
nyist 103 A+B Problem II
http://acm.nyist.net/JudgeOnline/problem.php?pid=103
51nod 1029 大数除法
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1029
nyist 28 大数阶乘
http://acm.nyist.net/JudgeOnline/problem.php?pid=28
51nod 1030 大数进制转换
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1030
nyist 114 某种序列
http://acm.nyist.net/JudgeOnline/problem.php?pid=114
描述:数列A满足An = An-1 + An-2 + An-3, n >= 3。编写程序,给定A0,
A1 和 A2, 计算A99
原来的思路:
发现反正涉及到大数,避开不了,那就用java大数水吧。
nyist 45 棋盘覆盖
http://acm.nyist.net/JudgeOnline/problem.php?pid=45
分析:理性分析看不出来,直接找规律,
相关博客:
BigInteger:
http://blog.csdn.net/thearcticocean/article/details/49280645
BigDecimal:
http://www.apihome.cn/api/java/BigDecimal.html
一些练习:
nyist 73 比大小
http://acm.nyist.net/JudgeOnline/problem.php?pid=73
import java.util.*; import java.math.BigInteger; public class Main { public static void main(String[] args) { Scanner cin=new Scanner (System.in); BigInteger a,b; while(cin.hasNext()){ a=cin.nextBigInteger(); b=cin.nextBigInteger(); if(a.equals(BigInteger.ZERO)&&b.equals(BigInteger.ZERO)) break; int res=a.compareTo(b); if(res==-1){ System.out.println("a<b"); } else if(res==0){ System.out.println("a==b"); } else System.out.println("a>b"); } } }
nyist 103 A+B Problem II
http://acm.nyist.net/JudgeOnline/problem.php?pid=103
import java.util.*; import java.math.BigInteger; public class Main { public static void main(String[] args) { Scanner cin=new Scanner (System.in); int t,ca=1; t=cin.nextInt(); while(t>0){ t--; BigInteger a,b; a=cin.nextBigInteger(); b=cin.nextBigInteger(); System.out.printf("Case %d:\n",ca++); System.out.println(a+" + "+b+" = "+(a.add(b))); } } }
51nod 1029 大数除法
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1029
import java.util.*; import java.math.BigInteger; public class Main { public static void main(String[] args) { BigInteger a,b; Scanner cin=new Scanner (System.in); while(cin.hasNext()){ a=cin.nextBigInteger(); b=cin.nextBigInteger(); System.out.println(a.divide(b)); System.out.println(a.remainder(b)); } } }
nyist 28 大数阶乘
http://acm.nyist.net/JudgeOnline/problem.php?pid=28
import java.util.*; import java.math.BigInteger; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n; BigInteger ans=BigInteger.ONE; while(sc.hasNext()){ n=sc.nextInt(); for(int i=1;i<=n;i++){ ans=ans.multiply(BigInteger.valueOf(i)); } System.out.println(ans); } } }
51nod 1030 大数进制转换
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1030
import java.util.*; import java.math.BigInteger; public class Main{ public static void main(String[] args) { String str=""; Scanner cin=new Scanner (System.in); while(cin.hasNext()){ str=cin.nextLine(); String ans=new BigInteger(str,36).toString(10); System.out.println(ans); } } }
nyist 114 某种序列
http://acm.nyist.net/JudgeOnline/problem.php?pid=114
描述:数列A满足An = An-1 + An-2 + An-3, n >= 3。编写程序,给定A0,
A1 和 A2, 计算A99
原来的思路:
发现反正涉及到大数,避开不了,那就用java大数水吧。
import java.util.*; import java.math.BigInteger; public class Main { public static void main(String[] args) { Scanner cin=new Scanner (System.in); BigInteger []a=new BigInteger [5]; while(cin.hasNext()){ a[0]=cin.nextBigInteger(); a[1]=cin.nextBigInteger(); a[2]=cin.nextBigInteger(); for(int i=3;i<=99;i++){ a[3]=a[2].add(a[1]); a[3]=a[3].add(a[0]); a[0]=a[1]; a[1]=a[2]; a[2]=a[3]; } System.out.println(a[2]); } } }
nyist 45 棋盘覆盖
http://acm.nyist.net/JudgeOnline/problem.php?pid=45
分析:理性分析看不出来,直接找规律,
import java.util.*; import java.math.BigInteger; public class Main { public static void main(String[] args) { int m,k; Scanner sc=new Scanner (System.in); m=sc.nextInt(); while(m>0){ m--; BigInteger ans=BigInteger.ONE; k=sc.nextInt(); for(int i=1;i<=k;i++){ ans=ans.multiply(BigInteger.valueOf(4)); } ans=ans.subtract(BigInteger.valueOf(1)); ans=ans.divide(BigInteger.valueOf(3)); System.out.println(ans); } } }做题过程中发现,用含有包语句的代码提交后出现RE,必须除去它。
相关文章推荐
- 【java】解析excel文档(兼容全版本)
- java系统学习(十六) --------JDBC及其应用
- java系统学习(十六) --------JDBC及其应用
- java 线程创建时间
- java中的BigInteger(很好很强大)(转)
- JAVA开发--游戏24点
- 第三章 DispatcherServlet详解 ——跟开涛学SpringMVC
- JAVA开发--U盘EXE恢复工具
- 修改Spring-task 定时时间
- MyEclipse使用JAX-WS 2.0生成WebService报错,无法生成WSDL文件
- Spring配置事务切面
- javaweb之Java基础加强
- 【dubbo源码解读系列】之一 使用eclipse调试dubbo源代码
- JS以及Java防止数据重复提交
- Java读取Properties文件的六种方法
- Java设计模式---原型模式(Prototype)
- Java设计模式---原型模式(Prototype)
- gradle --refresh-dependencies cleanEclipse eclipse
- eclipse项目导入的问题
- 在Ubuntu中安装Eclipse与Helloworld