Javascript 斐波那契问题,超过int的最大值

Javascript 斐波那契问题,超过int的最大值,javascript,int,max,fibonacci,Javascript,Int,Max,Fibonacci,我正在努力解决这个问题 这是我的解决办法。对于n=78,结果是正确的,较高的值会使结果超过max int。由于spidermonkey,我不能使用BigInt()。那么就不能使用javascript。。一旦你的整数超过最大安全整数,你就被限制了。。。但是你不使用BigInt的理由是有缺陷的-spidermonkey可以处理BigInt超过一年当我尝试在ideone上使用BigInt时,我得到错误:“BigInt没有定义”什么是ideone?这与spidermonkeyIdeone在线编译器有什么

我正在努力解决这个问题


这是我的解决办法。对于n=78,结果是正确的,较高的值会使结果超过max int。由于spidermonkey,我不能使用BigInt()。

那么就不能使用javascript。。一旦你的整数超过最大安全整数,你就被限制了。。。但是你不使用BigInt的理由是有缺陷的-spidermonkey可以处理BigInt超过一年当我尝试在ideone上使用BigInt时,我得到错误:“BigInt没有定义”什么是ideone?这与spidermonkeyIdeone在线编译器有什么关系。对于javascript,它使用spidermonkey版本60.2.3,与SPOJ相同。哦,对了,那么就不能使用BigInt:D
MOD = 1000000007;

function copy(a, b) {
    a[0][0] = b[0][0];
    a[0][1] = b[0][1];
    a[1][0] = b[1][0];
    a[1][1] = b[1][1];
 }

function multiply(fib, base) {
    let mat = [[], []];
    copy(mat, fib);

    mat[0][0] = (fib[0][0]*base[0][0] + fib[0][1]*base[1][0]) % MOD;
    mat[0][1] = (fib[1][0]*base[0][0] + fib[1][1]*base[1][0]) % MOD;
    mat[1][0] = (fib[0][0]*base[0][1] + fib[0][1]*base[1][1]) % MOD;
    mat[1][1] = (fib[1][0]*base[0][1] + fib[1][1]*base[1][1]) % MOD;
    copy(fib, mat);
}

function calcMatrix(fib, n) {
    const base = [[1,1], [1,0]];
    fib[0][0] = 1;
    fib[0][1] = 0;
    fib[1][0] = 0;
    fib[1][1] = 1;

while (n) {
    print(n);
    if (n&1) {
        multiply(fib, base);
    }
    multiply(base, base);
    print('bef', n)
    n = n.toString(2).slice(0, -1); //same as n = n >> 1;
    print('aft', n)
    }
}

let t = parseInt(readline());
while(t--)
{
[N, M] = readline().split(' ');
N = Number(N);
M = Number(M);
let fib = [[],[]];
calcMatrix(fib, N);
let fn = fib[0][1];
let fn1 = fib[1][1] ;

calcMatrix(fib, M-N+2);
// (a%mod -b%mod +mod)%mod
let sum =  ((fib[0][0]-1)*fn + (fib[0][1]-1)*fn1 + MOD) % MOD;
print('wyni', sum);
}