前阵子学了一下java处理大数的方法。顺便写了几道大数水题,补一补代码..
大整数加法:
import java.io.*;
import java.util.*;
import java.math.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
int t = cin.nextInt();
for(int i=0;i<t;i++){
BigInteger a = cin.nextBigInteger(),b = cin.nextBigInteger();
System.out.println(a.add(b));
}
}
}
/**************************************************************
Problem: 1151
User: jimmy_chan
Language: Java
Result: Accepted
Time:250 ms
Memory:17388 kb
****************************************************************/
大斐波数:
import java.io.*;
import java.util.*;
import java.math.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
BigInteger []a=new BigInteger[1001];
a[0]=a[1]=a[2]=BigInteger.ONE;
for(int i=3;i<=1000;i++){
a[i]=a[i-1].add(a[i-2]);
}
int t = cin.nextInt();
for(int i=0;i<t;i++){
int n = cin.nextInt();
System.out.println(a[n]);
}
}
}
/**************************************************************
Problem: 1293
User: jimmy_chan
Language: Java
Result: Accepted
Time:176 ms
Memory:17228 kb
****************************************************************/
大整数比较:
菜鸡写法,纯粹为了测试大数~QAQ
import java.io.*;
import java.util.*;
import java.math.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
BigInteger a = cin.nextBigInteger(),b = cin.nextBigInteger(),c = cin.nextBigInteger();
BigInteger t = (a.min(b)).min(c);
BigInteger t1 = (a.max(b)).max(c);
System.out.println(t);
if(!a.equals(t1)&&!a.equals(t))System.out.println(a);
else if(!b.equals(t1)&&!b.equals(t))System.out.println(b);
else if(!c.equals(t1)&&!c.equals(t))System.out.println(c);
System.out.println(t1);
}
}
/**************************************************************
Problem: 1169
User: jimmy_chan
Language: Java
Result: Accepted
Time:164 ms
Memory:16740 kb
****************************************************************/
大整数进制转换:
import java.io.*;
import java.util.*;
import java.math.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
BigInteger a = cin.nextBigInteger(16),b = cin.nextBigInteger(16);
BigInteger ans = a.add(b);
String st = ans.toString(16);
System.out.println(st);
}
}
/**************************************************************
Problem: 1703
User: jimmy_chan
Language: Java
Result: Accepted
Time:160 ms
Memory:16720 kb
****************************************************************/
最最后,给大家一个tip,如果看到一个大数题,不要太高兴,这也许是出题人(丧心病狂QAQ)出的一道专门卡java大数类的题目,这时候应该冷静下来,默默打开statu,选择java和题号,看看有木有人通过Orz....