概述
利用Java大数的ACM题:HDU 1715 1002 1042 1753 1865 1063,代码Accepted。
代码比较简单,题目详细描述见官网 http://acm.hdu.edu.cn/listproblem.php?vol=1
//1715 求斐波那契数列
import java.math.*;
import java.util.*;
public class Main
{
public static void main(String args[]){
BigDecimal a[] = new BigDecimal[1005];
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){//等价于!=EOF
a[1] = a[2] = new BigDecimal("1");
for (int i =3; i< 1005; i++){
a[i] = a[i-1].add(a[i-2]);
}
int N = cin.nextInt();
for (int j = 0; j< N;j++){
int pi = cin.nextInt();
System.out.println(a[pi]);
}
}
}
//1753 求A+B
import java.math.*;
import java.util.*;
public class Main
{
public static void main(String args[]){
BigDecimal c = new BigDecimal("0");
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){//等价于!=EOF
BigDecimal a = cin.nextBigDecimal();
BigDecimal b = cin.nextBigDecimal();
c = a.add(b);
System.out.println(c.stripTrailingZeros().toPlainString());
}
}
}
//1002 求 A+B(注意格式)
import java.math.*;
import java.util.*;
public class Main
{
public static void main(String args[]){
BigInteger c = new BigInteger("0");
Scanner cin = new Scanner(System.in);
int N = cin.nextInt();
//while(cin.hasNext()){//等价于!=EOF
for (int i = 1;i<=N;i++){
BigInteger a = cin.nextBigInteger();
BigInteger b = cin.nextBigInteger();
c = a.add(b);
System.out.println("Case "+i + ":");
System.out.println(a + " + " + b + " = " + c);
if( i != N)
System.out.println();//注意:最后一个样例后不输出空行
}
}
// }
}
//1042 求阶乘
import java.math.*;
import java.util.*;
public class Main
{
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
while (cin.hasNext()){
// 计算阶乘
BigInteger c = new BigInteger("1");
int n = cin.nextInt();
for(int i = 1;i <= n; i++){
BigInteger s = BigInteger.valueOf(i);
c = c.multiply(s);
}
System.out.println(c);
}
}
}
//1685 求111的组合个数:类似于一个有n级的楼梯,一次可以上一个台阶,也可以上两个台阶,问一共有多少种方法。
import java.math.*;
import java.util.*;
public class Main
{
public static void main(String args[]){
BigInteger arr[] = new BigInteger[205];
Scanner cin = new Scanner(System.in);
arr[1] = BigInteger.valueOf(1);
arr[2] = BigInteger.valueOf(2);
for (int j = 3; j<205; j++){
arr[j] = arr[j-1].add(arr[j-2]);
}
int N = cin.nextInt();
for (int i = 0;i<N; i++){
BigInteger a = cin.nextBigInteger();
int k = a.toString().length();
System.out.println(arr[k]);
}
}
}
//1063 求R的n次方,注意输出格式的要求
import java.math.*;
import java.util.*;
public class Main
{
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
while (cin.hasNext()){
// 计算n方
BigDecimal r = cin.nextBigDecimal();
int n = cin.nextInt();
BigDecimal rn = new BigDecimal("1.0");
rn = r.pow(n).stripTrailingZeros();//去掉字符串最后面的0以及来消除BigDecimal用科学计数形式来表示结果
String tmp = rn.toPlainString();
//去掉前导0
if(tmp.startsWith("0"))
tmp=tmp.substring(1);
System.out.println(tmp);
}
}
}
最后
以上就是傲娇大侠为你收集整理的Java大数求解ACM(HDU)的全部内容,希望文章能够帮你解决Java大数求解ACM(HDU)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复