gpt4 book ai didi

java - 在 Top coder 中解决输入量较大的 java 程序

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:19 24 4
gpt4 key购买 nike

我正在用 java 解决 SRM 144 DIV 1 的问题。我的代码适用于所有测试用例,但有一个测试用例的值为“12221112222221112221111111112221111”现在我知道这超出了 java 中任何数据类型的限制。

现在有办法解决这个问题吗?这是我的代码示例。

public class BinaryCode{
public String[] decode(String message){
int mess = Integer.parseInt(message);
int encmess[] = new int[message.length()];
for(int i = message.length()-1;i>=0;i--){
encmess[i] = mess%10;
mess = mess/10;
}
int[] decmess1 = new int[message.length()];
int[] decmess2 = new int[message.length()];
decmess1[0] = 0;
decmess2[0] = 1;
String mess1 = "";
String mess2 = "";

for(int i = 1;i<decmess1.length;i++){
if(i == 1){
decmess1[i] = encmess[i-1] - decmess1[i-1];
}
else{
decmess1[i] = encmess[i-1] - decmess1[i-1] - decmess1[i-2];
}
if(decmess1[i]>1||decmess1[i]<0){
mess1 = "NONE";
break;
}
}
for(int i = 1;i<decmess2.length;i++){
if(i == 1){
decmess2[i] = encmess[i-1] - decmess2[i-1];
}
else{
decmess2[i] = encmess[i-1] - decmess2[i-1] - decmess2[i-2];
}
if(decmess2[i]>1||decmess2[i]<0){
mess2 = "NONE";
break;
}
}
int num1 = 0;
int num2 = 0;
if(!mess1.equals("NONE")){
for(int i = 0;i<decmess2.length;i++){

num1 = num1*10 + decmess1[i];

}
}
if(!mess2.equals("NONE")){
for(int i = 0;i<decmess2.length;i++){

num2 = num2*10 + decmess2[i];
}
}
if(!mess1.equals("NONE"))
mess1 = "0"+Integer.toString(num1);
if(!mess2.equals("NONE"))
mess2 = Integer.toString(num2);

String[] result = {mess1,mess2};
return result;
}

}

最佳答案

您可以使用BigInteger代替int

尝试类似的事情

BigInteger mess = new BigInteger(message);

关于java - 在 Top coder 中解决输入量较大的 java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36491963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com