@Artyom02
Начинающий программист

Как решить 13 задачу Эйлера?

Мое решение:
let sum = 0; // сумма чисел
let a = 1; // элемент по счету с конца

function count() {
	let arr = []; // массив для чисел, которые суммируются

	for (let i = 0; i < array.length; i++) { // проходимся по массивам
		let str = array[i].toString().split(''); // отделяем числа друг от друга
		let number = str.slice([str.length - a], [str.length]); // берем числа с конца начиная от 1 
		arr.push(parseInt(number.join(''))) // соединяем числа которые брали и переносим их в числовой тип
	}

	let protect = arr.reduce((total, sum) => total + sum, 0); // сумма всех этим чисел

	sum += Number(protect); // прибавляем к sum

	if (String(sum).length < 10) { // проверяем длину sum
		a++;
		sum = 0;
		count();
	} else {
		console.log(sum) // выводим сумму
	}
}
count()


Код работает, но ответ выдается неправильный (по крайней мере ответ не принимается за правильный на оф.сайте).
Подскажите, что не так. Массив с числами можете создать по ссылке: https://projecteuler.net/problem=13
Он слишком большой чтобы помещать сюда.
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 1
@twolegs
Тип number в js не целочисленный, поэтому при суммировании таких больших чисел могут быть потери.
Попробуйте использовать BigInt, может быть с ним будет работать. Но вообще эта задача предполагает аналитическое решение, а не решение в "лоб".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы