Java 如果BigInteger对于int太大,如何返回int?
我目前正试图解决一个黑客问题,这个问题叫做Fibonacci修正 该方法返回一个int,但预期我将获得巨大的值。我正在用Java解决这个问题 这是我的密码Java 如果BigInteger对于int太大,如何返回int?,java,dynamic-programming,biginteger,Java,Dynamic Programming,Biginteger,我目前正试图解决一个黑客问题,这个问题叫做Fibonacci修正 该方法返回一个int,但预期我将获得巨大的值。我正在用Java解决这个问题 这是我的密码 static int fibonacciModified(int t1, int t2, int n) { BigInteger[] f = new BigInteger[n]; f[0] = BigInteger.ZERO; f[1] = BigInteger.ONE; BigInteger value =
static int fibonacciModified(int t1, int t2, int n) {
BigInteger[] f = new BigInteger[n];
f[0] = BigInteger.ZERO;
f[1] = BigInteger.ONE;
BigInteger value = BigInteger.ONE;
for(int i = 2; i < n; i++) {
f[i] = f[i-1].multiply(f[i-1]).add(f[i-2]);
value = f[i];
}
return value.intValue();
}
静态int fibonacciModified(int t1,int t2,int n){
BigInteger[]f=新的BigInteger[n];
f[0]=BigInteger.0;
f[1]=BigInteger.1;
BigInteger值=BigInteger.1;
for(int i=2;i
当t1=0,t2=1,n=10时,我的测试用例失败了。我的输出是-1022889632。
正确答案是8426661309621243382112。如果我更改方法以返回一个BigInteger,那么我确实得到了正确的答案
编辑:这是指向问题的链接您不能,是2147483647
(32位值)。如果需要大的数字,则必须使用适当的变量类型
如果出于某种原因,您根本不想使用biginger
,并且以后不打算进行任何算术运算,则始终可以返回字符串
关于,只需将结果变量类型修改为
biginger
。实际上,他们似乎意识到32/64位的问题。。。他们正在使用字符串值来阻止它。
没有理由保留整个代码模板结构。他们只关心输入/输出。您可以修改除这两项之外的所有内容
这是他们的输入:
这是他们的输出(在这里你可以看到他们的输出应该是字符串
):
intValue()
取值的低32位,这就是为什么会得到不同的结果。如果您试图通过针对0、1和10的测试。在这种情况下,应该修改测试以针对BigInteger进行测试。如果不能,请在此处发布测试代码,以便建议适当的解决方法。您可以完整描述算法,或链接到黑客等级问题描述。因此,请更改方法以返回BigInteger
。如果您可以使用像int
这样的大数字,那么为什么会首先存在biginger
?请记住,提交计算器严格地查看写入输出文件的行。您可以使用提供的任何导入来实现解决方案
和结果
类,包括java.math.*
。Java模板被误导了,因为它将方法返回指定为int
。