为什么不添加 bigInts?
Why aren't the bigInts adding?
我制作了一个 NodeJS 程序,它将整数对 (m, n
) 作为输入并在控制台上打印其阶乘 (facm, factn
) 的 sum
。我使用了 BigInteger.js 库,这样我就可以使用大数字进行计算。
但是当我输入20 1
时,程序只输出了20的值!而不是 20! + 1!它没有添加。为什么?
(由于某些原因,它适用于两个输入相同的情况,例如20 20
。当值较小时它也适用。)
var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');
var bigInt = require("big-integer");
for (var i = 0; lines[i] != ""; i++) {
var strings = lines[i].split(" ");
var m = parseInt(strings[0]);
var n = parseInt(strings[1]);
var factm = bigInt(1);
var factn = bigInt(1);
for (var a = m; a != 0; a--) {
factm = factm.multiply(a);
}
for (var b = n; b != 0; b--) {
factn = factn.multiply(b);
}
var sum = factm.add(factn);
console.log(sum.toString());
}
将 var sum = factm.add(factn)
替换为 var sum = factm.add(factn.toString())
即可解决问题。
我制作了一个 NodeJS 程序,它将整数对 (m, n
) 作为输入并在控制台上打印其阶乘 (facm, factn
) 的 sum
。我使用了 BigInteger.js 库,这样我就可以使用大数字进行计算。
但是当我输入20 1
时,程序只输出了20的值!而不是 20! + 1!它没有添加。为什么?
(由于某些原因,它适用于两个输入相同的情况,例如20 20
。当值较小时它也适用。)
var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');
var bigInt = require("big-integer");
for (var i = 0; lines[i] != ""; i++) {
var strings = lines[i].split(" ");
var m = parseInt(strings[0]);
var n = parseInt(strings[1]);
var factm = bigInt(1);
var factn = bigInt(1);
for (var a = m; a != 0; a--) {
factm = factm.multiply(a);
}
for (var b = n; b != 0; b--) {
factn = factn.multiply(b);
}
var sum = factm.add(factn);
console.log(sum.toString());
}
将 var sum = factm.add(factn)
替换为 var sum = factm.add(factn.toString())
即可解决问题。