N Factorial

Здравейте!
Имам проблем с тази задача.
Description:

Write a method that multiplies a number represented as an array of digits by a given integer number. Write a program to calculate N! .

Input:

On the first line you will receive the number N

Output:

Print N!

Constraints:

0 <= N <= 100

Sample tests:

|Input|Output|

|5|120|
Това е кодът ми:
https://pastebin.pl/view/3f2b8094
В judge системата ми дава 70/100
Благодаря предварително!

Здравей, не виждам проблем в логиката, предполагам проблемът е в това, че най-голямото число което може да се представи като Number е 2^53 - 1, а числата към 100 надвишават границата. Предлагам да използваш BigInt за представяне на числата, където няма горна граница. Понеже не могат да се смесват BigInt и Number, кодът ще изглежда така:

let input = ['50'];
let gets =
	this.gets ||
	(
		(arr, index) => () =>
			arr[index++]
	)(input, 0);
let print = this.print || console.log;

let number = BigInt(+gets());
let factorial = BigInt(1);

for (let i = BigInt(2); i <= number; i++) {
	if (number >= 0 && number <= 100) {
		factorial *= i;
	}
}
//добавям toString метода, понеже bigint числата завършват на 'n'
print(factorial.toString());

Тествах я отново и мина 100/100. Много благодаря!

1 Like