Java大数类
大数加法
http://ac.jobdu.com/problem.php?pid=1198
import java.math.*;
import java.util.Scanner;
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();
System.out.println(a.add(b));
}
}
}
N的阶乘
http://ac.jobdu.com/problem.php?pid=1076
import java.math.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
int N = cin.nextInt();
BigInteger ans = BigInteger.ONE;
for(int i=2;i<=N;i++)
{
ans = ans.multiply(BigInteger.valueOf( i ));
}
System.out.println(ans);
}
}
}
进制转换
http://ac.jobdu.com/problem.php?pid=1080
import java.math.*;
import java.util.Scanner;
import java.*;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
int M=cin.nextInt();
int N=cin.nextInt();
String X=cin.next();
BigInteger sum = BigInteger.ZERO;
for(int i=0;i<X.length();i++)
{
sum=sum.multiply(BigInteger.valueOf(M));
sum=sum.add(BigInteger.valueOf(charToInt(X.charAt(i))));
}
String ans="";
if(sum.compareTo(BigInteger.ZERO)==0)
ans="0";
while(sum.compareTo(BigInteger.ZERO)!=0)
{
BigInteger tmp=sum.mod(BigInteger.valueOf(N));
ans=intToChar(tmp.intValue())+ans;
sum=sum.divide(BigInteger.valueOf(N));
}
System.out.println(ans);
}
}
private static char intToChar(int num) {
if(0<=num&&num<=9) return (char) ('0'+num);
else return (char) ('a'+num-10);
}
private static int charToInt(char c)
{
if('0'<=c&&c<='9') return c-'0';
else return c-'A'+10;
}
}