您的位置:首页 > 其它

大数专题

2016-02-27 19:20 204 查看
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1002

思路:求2个大数相加

AC代码:

import java.io.*;
import java.util.*;
import java.math.BigInteger;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int t = in.nextInt();
for(int i =1; i<=t; i++)
{
BigInteger a = in.nextBigInteger();
BigInteger b = in.nextBigInteger();
BigInteger c = a.add(b);
System.out.println("Case " + i + ":");
System.out.println(a + " + " + b + " = " + c);
if(i != t)
System.out.println("");

}
}

}
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1042

思路:求一个数的阶乘

AC代码:

import java.io.*;
import java.util.*;
import java.math.BigInteger;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
while(in.hasNextInt())
{
int n = in.nextInt();
BigInteger sum = BigInteger.ONE;
//BigInteger sum1 = new BigInteger("1");
//这一种写法也可以
for(int i=2; i<=n; i++)
{
sum = sum.multiply(BigInteger.valueOf(i));
}
System.out.println(sum);
}
}

}


题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1047

思路:求好几个大数的和

AC代码:

import java.io.*;
import java.util.*;
import java.math.BigInteger;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n = in.nextInt();
for(int i=1; i<=n; i++)
{
BigInteger sum = BigInteger.ZERO;
while(true)
{
BigInteger b = in.nextBigInteger();
if(b.compareTo(BigInteger.ZERO) == 0)
{
break;
}
sum = sum.add(b);
}
System.out.println(sum);
if(i < n)
System.out.println("");

}
}

}
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1316

思路:

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1715

AC代码:

import java.io.*;
import java.util.*;
import java.math.BigInteger;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
BigInteger a[] = new BigInteger[1010];
a[1] = BigInteger.ONE;
a[2] = BigInteger.ONE;
for(int i=3; i<=1000; i++)
{
a[i] = a[i-1].add(a[i-2]);
}
int t = in.nextInt();
for(int i=1; i<=t; i++)
{
int b = in.nextInt();
System.out.println(a[b]);
}
}

}

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1063

AC代码:

import java.util.*;
import java.math.BigDecimal;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n,i;
BigDecimal a,sum;
BigDecimal one = new BigDecimal("1");
while(in.hasNextBigDecimal())
{
a = in.nextBigDecimal();
n = in.nextInt();
sum = one;
for(i=1; i<=n; i++)
{
sum = sum.multiply(a);
}
sum = sum.stripTrailingZeros();//返回数值上等于此小数,但从该表示形式移除所有尾部零的 BigDecimal
String str = sum.toPlainString();//返回不带指数字段的此 BigDecimal 的字符串表示形式
if(str.startsWith("0."))
str = str.substring(1);//从1位置截取子串,并返回
System.out.println(str);
}
}

}

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1316
AC代码:

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int i,j;
BigInteger a,b;
BigInteger f[] = new BigInteger[501];
BigInteger zero = new BigInteger("0");
f[1]=new BigInteger("1");
f[2]=new BigInteger("2");
for(i=3;i<=500;i++)
f[i]=f[i-1].add(f[i-2]);
while(cin.hasNextBigInteger()){
a=cin.nextBigInteger();
b=cin.nextBigInteger();
if(a.compareTo(zero)==0 && b.compareTo(zero)==0)break;
for(j=0,i=1;i<=500;i++){
if(a.compareTo(f[i])<=0 && b.compareTo(f[i])>=0)j++;
if(b.compareTo(f[i])<0)break;
}
System.out.println(j);
}
}
}


题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1753
AC代码:

import java.math.BigDecimal;
import java.util.*;
public class Main
{
public static void main(String[] args)
{
BigDecimal a, b, c;
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
a = cin.nextBigDecimal();
b = cin.nextBigDecimal();
c = a.add(b);
if(c.compareTo(BigDecimal.ZERO) == 0)
System.out.println("0");
else
System.out.println(c.stripTrailingZeros().toPlainString());
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: