请问一下这段代码怎样优化内存空间,杭电2100显示Memory Limit Exceeded了
原题http://acm.hdu.edu.cn/showproblem.php?pid=2100
代码是用java写的,大数运算问题:
import java.util.*;
import java.math.*;
public class Main{
static void turn(BigInteger n,BigInteger r){
if(n!=BigInteger.valueOf(0)){
turn(n.divide(r),r);
int ans=n.mod(r).intValue()+'A';
System.out.print((char)ans);
}
}
public static void main(String args[]){
Scanner cin=new Scanner(System.in);
while(cin.hasNext()){
String a=cin.next();
String b=cin.next();
int la=a.length();
int lb=b.length();
BigInteger numA=BigInteger.valueOf(0);
BigInteger numB=BigInteger.valueOf(0);
for(int i=la-1;i>=0;i--){
numA=numA.add(BigInteger.valueOf(a.charAt(i)-'A').multiply(BigInteger.valueOf(26).pow(la-1-i)));
}
for(int i=lb-1;i>=0;i--){
numB=numB.add(BigInteger.valueOf(b.charAt(i)-'A').multiply(BigInteger.valueOf(26).pow(lb-1-i)));
}
BigInteger sum=numA.add(numB);
turn(sum,BigInteger.valueOf(26));
System.out.println();
}
}
}
------解决方案--------------------
static void turn(BigInteger n,BigInteger r){
if(n!=BigInteger.valueOf(0)){
turn(n.divide(r),r);
int ans=n.mod(r).intValue()+'A';
System.out.print((char)ans);
}
}
看了这个方法,后我觉得你不是要优化内存,而是要把你程序里可能有的bug改掉。
1。 r为0怎么办
2. r为1是什么效果
3. 2个对象是不是一样是用== 或 !=来判断的?
等等