您的位置:首页 > 编程语言 > Java开发

Java大数类处理的简单程序

2013-04-24 17:53 309 查看
大数阶乘
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=28
代码如下:
[java] view plaincopyprint?
1. import java.io.*;  
2. import java.math.BigInteger;  
3. import java.util.*;  
4.   
5. public class Main  
6. {  
7.     public static void main(String args[])  
8.     {  
9.         Scanner cin = new Scanner(System.in);     
10.         int n = cin.nextInt();  
11.         BigInteger ans = BigInteger.ONE;  
12.         for(int i = 1; i <= n; ++i)  
13.             ans = ans.multiply(BigInteger.valueOf(i));  
14.         System.out.println(ans);  
15.     }  
16. }  
import java.io.*;
import java.math.BigInteger;
import java.util.*;

public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
BigInteger ans = BigInteger.ONE;
for(int i = 1; i <= n; ++i)
ans = ans.multiply(BigInteger.valueOf(i));
System.out.println(ans);
}
}

棋盘覆盖
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=45
代码如下:
[java] view plaincopyprint?
1. import java.math.BigInteger;  
2. import java.util.*;  
3. import java.io.*;  
4.   
5. public class Main  
6. {  
7.     public static void main(String args[])  
8.     {  
9.         Scanner in = new Scanner(System.in);  
10.         int test = in.nextInt();  
11.         while(test-- > 0)  
12.         {  
13.             int n;  
14.             n = in.nextInt();  
15.             BigInteger a = new BigInteger("4");  
16.             for(int i = 1; i < n; ++i)  
17.                 a = a.multiply(BigInteger.valueOf(4));  
18.             System.out.println(a.subtract(BigInteger.valueOf(1)).divide(BigInteger.valueOf(3)));  
19.         }  
20.     }  
21. }  
import java.math.BigInteger;
import java.util.*;
import java.io.*;

public class Main
{
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
int test = in.nextInt();
while(test-- > 0)
{
int n;
n = in.nextInt();
BigInteger a = new BigInteger("4");
for(int i = 1; i < n; ++i)
a = a.multiply(BigInteger.valueOf(4));
System.out.println(a.subtract(BigInteger.valueOf(1)).divide(BigInteger.valueOf(3)));
}
}
}
比较大小
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=73
代码如下:
[java] view plaincopyprint?
1. import java.io.*;  
2. import java.math.BigInteger;  
3. import java.util.*;  
4.   
5. public class Main  
6. {  
7.     public static void main(String args[])  
8.     {  
9.         Scanner cin = new Scanner(System.in);     
10.         while(cin.hasNext())  
11.         {  
12.             BigInteger a = cin.nextBigInteger();  
13.             BigInteger b = cin.nextBigInteger();  
14.             if(a.equals(BigInteger.ZERO) && b.equals(BigInteger.ZERO))  
15.                 break;  
16.             int flag = a.compareTo(b);  
17.             if(flag == -1)  
18.                 System.out.println("a<b");  
19.             else if(flag == 0)  
20.                 System.out.println("a==b");  
21.             else  
22.                 System.out.println("a>b");  
23.         }  
24.     }  
25. }  
import java.io.*;
import java.math.BigInteger;
import java.util.*;

public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
BigInteger a = cin.nextBigInteger();
BigInteger b = cin.nextBigInteger();
if(a.equals(BigInteger.ZERO) && b.equals(BigInteger.ZERO))
break;
int flag = a.compareTo(b);
if(flag == -1)
System.out.println("a<b");
else if(flag == 0)
System.out.println("a==b");
else
System.out.println("a>b");
}
}
}

大数加法
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=103
代码如下:
[java] view plaincopyprint?
1. import java.math.BigInteger;  
2. import java.util.*;  
3. import java.io.*;  
4.   
5. public class Main  
6. {  
7.     public static void main(String args[])  
8.     {  
9.         Scanner in = new Scanner(System.in);  
10.         int n = in.nextInt();         
11.         for(int i = 1; i <= n; ++i)  
12.         {  
13.             BigInteger a = in.nextBigInteger();  
14.             BigInteger b = in.nextBigInteger();  
15.             BigInteger ans = a.add(b);  
16.             System.out.println("Case " + i + ":");  
17.             System.out.println(a + " + " + b + " = " +ans);  
18.         }  
19.     }  
20. }  
import java.math.BigInteger;
import java.util.*;
import java.io.*;

public class Main
{
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
int n = in.nextInt();
for(int i = 1; i <= n; ++i)
{
BigInteger a = in.nextBigInteger();
BigInteger b = in.nextBigInteger();
BigInteger ans = a.add(b);
System.out.println("Case " + i + ":");
System.out.println(a + " + " + b + " = " +ans);
}
}
}

递推求值
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=114
代码如下:
[java] view plaincopyprint?
1. import java.io.*;  
2. import java.math.BigInteger;  
3. import java.util.*;  
4.   
5. public class Main  
6. {  
7.     public static void main(String args[])  
8.     {  
9.         Scanner cin = new Scanner(System.in);     
10.         BigInteger a[] = new BigInteger[100];  
11.         while(cin.hasNext())  
12.         {  
13.             for(int i = 0; i <= 2; ++i)  
14.                 a[i] = cin.nextBigInteger();  
15.             for(int i = 3; i <= 99; ++i)  
16.                 a[i] = a[i - 1].add(a[i - 2]).add(a[i - 3]);  
17.             System.out.println(a[99]);  
18.         }  
19.     }  
20. }  
import java.io.*;
import java.math.BigInteger;
import java.util.*;

public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
BigInteger a[] = new BigInteger[100];
while(cin.hasNext())
{
for(int i = 0; i <= 2; ++i)
a[i] = cin.nextBigInteger();
for(int i = 3; i <= 99; ++i)
a[i] = a[i - 1].add(a[i - 2]).add(a[i - 3]);
System.out.println(a[99]);
}
}
}

高精度幂
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=155
代码如下:
[java] view plaincopyprint?
1. import java.io.*;  
2. import java.math.BigDecimal;  
3. import java.util.*;  
4.   
5. public class Main  
6. {  
7.     public static void main(String args[])  
8.     {  
9.         Scanner cin = new Scanner(System.in);     
10.         while(cin.hasNext())  
11.         {  
12.             BigDecimal ans = cin.nextBigDecimal();  
13.             int n = cin.nextInt();  
14.             String res = ans.pow(n).stripTrailingZeros().toPlainString(); //整数去掉小数点和后面的0   
15.             if(res.startsWith("0")) //去掉前导0   
16.             {  
17.                 res = res.substring(1);  
18.             }  
19.             System.out.println(res);  
20.         }  
21.     }  
22. }  
计算100!+101!+……+200!

import java.math.*;
  public class No0305
  {
  public static void main(String args[])
  {
  BigInteger
  first100=new BigInteger("100"),//初始化各个大整数
  last201=new BigInteger("201"),
  one=new BigInteger("1"),
  power=new BigInteger("1"),
  result=new BigInteger("0");
  for (BigInteger i=one;i.compareTo(last201)<0;i=i.add(one))//循环累加从1到201
  {
  power=power.multiply(i);//求i!
  if(i.compareTo(first100)>=0)//从100!开始加
  result=result.add(power);
  }
  System.out.println(result.toString());
  }
  }

补充:

public static void main(String[] args) {
  //int的最大数值是2的31次方减1,如果在最大值上继续增加则会从最小值开始,循环下去。
  //BigInteger没有最大值,但计算并不是很方便需要使用里面定义的各种方法才可以。
  Integer i = new Integer(2147483647);
  BigInteger bi = new BigInteger("2147483647");
  
  System.out.println(i+1);
  System.out.println(bi.add(BigInteger.ONE));
 }

java中数值型数据的 无穷大、无穷小 的写法

无穷大:

Integer.MAX_VALUE;
Long.MAX_VALUE; 
Double.MAX_VALUE

无穷小:
Integer.MIN_VALUE;
Long.MIN_VALUE; 
Double.MIN_VALUE;

参考网址http://www.cnblogs.com/Lyush/category/291376.html
http://blog.csdn.net/niushuai666/article/details/6972991
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java