大数阶乘
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=28
代码如下:
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
代码如下:
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
代码如下:
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
代码如下:
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
代码如下:
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
代码如下:
import java.io.*;
import java.math.BigDecimal;
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
BigDecimal ans = cin.nextBigDecimal();
int n = cin.nextInt();
String res = ans.pow(n).stripTrailingZeros().toPlainString(); //整数去掉小数点和后面的0
if(res.startsWith("0")) //去掉前导0
{
res = res.substring(1);
}
System.out.println(res);
}
}
}
大数运算:
import java.util.*;
import java.math.*;
public class Main{
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
BigInteger a, b;
//以文件EOF结束
while (cin.hasNext()){
a = cin.nextBigInteger();
b = cin.nextBigInteger();
System.out.println(a.add(b)); //大整数加法
System.out.println(a.subtract(b)); //大整数减法
System.out.println(a.multiply(b)); //大整数乘法
System.out.println(a.divide(b)); //大整数除法(取整)
System.out.println(a.remainder(b)); //大整数取模
//大整数的比较
if( a.compareTo(b) == 0 ) System.out.println("a == b"); //大整数a==b
else if( a.compareTo(b) > 0 ) System.out.println("a > b"); //大整数a>b
else if( a.compareTo(b) < 0 ) System.out.println("a < b"); //大整数a<b
//大整数绝对值
System.out.println(a.abs()); //大整数a的绝对值
//大整数的幂
int exponent=10;
System.out.println(a.pow(exponent)); //大整数a的exponent次幂
//返回大整数十进制的字符串表示
System.out.println(a.toString());
//返回大整数p进制的字符串表示
int p=8;
System.out.println(a.toString(p));
}
}
}
大数:
java大数(2013长春网络赛)--hdu4762
总结一下:
1.java提交类要写Main。
2.读取大数。
1 Scanner read=new Scanner(System.in); 2 BigInteger m; 3 m=read.nextBigInteger();
3.基本类型转化成大数。
1 BigInteger q=BigInteger.valueOf(n);
4.大数最大公约数:
1 BigInteger a=p.gcd(q);
5.finally函数只能写在try-catch后面
1 import java.math.*; 2 import java.util.*; 3 public class Main { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 Scanner read=new Scanner(System.in); 11 try{ 12 int t; 13 BigInteger m; 14 int n; 15 t=read.nextInt(); 16 while(t-->0){ 17 m=read.nextBigInteger(); 18 n=read.nextInt(); 19 BigInteger p=m.pow(n-1); 20 BigInteger q=BigInteger.valueOf(n); 21 BigInteger a=p.gcd(q); 22 System.out.println(q.divide(a)+"/"+p.divide(a)); 23 } 24 } 25 finally{ 26 read.close(); 27 } 28 29 } 30 }