Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果BigInteger对于int太大,如何返回int?_Java_Dynamic Programming_Biginteger - Fatal编程技术网

Java 如果BigInteger对于int太大,如何返回int?

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 =

我目前正试图解决一个黑客问题,这个问题叫做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 = 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