Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.09.2017, 01:43
Новичок на форуме
Отправить личное сообщение для tghoster Посмотреть профиль Найти все сообщения от tghoster
 
Регистрация: 29.09.2017
Сообщений: 1

Колличество нулей в конце факториала
Есть массив чисел, нужно найти кол-во нулей в конце факториала каждого из чисел. Сама уже не могу справиться
Ответить с цитированием
  #2 (permalink)  
Старый 29.09.2017, 02:39
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

alert([1,2,3,4,5,6,7,8,9,10,11,12,13].map(el=>(fac(el)+'').split('').reverse().findIndex(el=>el!= 0)));

function fac(n) {
  return n ? n * fac(n - 1) : 1;
}

Последний раз редактировалось j0hnik, 29.09.2017 в 03:10.
Ответить с цитированием
  #3 (permalink)  
Старый 29.09.2017, 02:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

вычислить факториал, количество нулей в конце, большие числа, разбить по три.
tghoster,
<script>
function diff(max, min) {
    max = max.split("").reverse();
    min = min.split("").reverse();
    var len = Math.max(max.length, min.length),
        result = [];
    for (var i = 0, b = 0, c = 0; i <= len; i++) {
        b = (+max[i] || 0) + (+min[i] || 0) + c;
        result[i] = b > 9 ? (c = 1, b - 10) : (c = 0, b)
    }
    return result.reverse().join("").replace(/^0+/, "")
}
function getFactZeros(x){
  var z = 0;
  while(x){
    x = (x/5)|0;
    z+=x;
  }
  return z;
}

function sum(x, y) {
    var res = "0";
    for (var i = 0; i < y; i++) res = diff(res, "" + x);
    return res
}
var re = /(?=\B(?:\d{3})+(?!\d+))/g;
var result = "1";
var r = 225;
for (var i = 1; i <= r; i++) {
    result = sum(result, "" + i);
    var n = result.replace(/.*?(0*$)/,"$1");
    document.write(i + " => " + result.replace(re, " ") + " => " + n + " => " + n.length +"  => " +getFactZeros(i)+ "<br><hr>")
};
</script>

Последний раз редактировалось рони, 29.09.2017 в 22:17.
Ответить с цитированием
  #4 (permalink)  
Старый 29.09.2017, 02:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

j0hnik,
попробуй сократить свой код в 5 раз и получить тот же результат
Ответить с цитированием
  #5 (permalink)  
Старый 29.09.2017, 02:58
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

рони,
reg exp?
Ответить с цитированием
  #6 (permalink)  
Старый 29.09.2017, 02:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

j0hnik,
холодно
Ответить с цитированием
  #7 (permalink)  
Старый 29.09.2017, 03:00
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

в 5???
Ответить с цитированием
  #8 (permalink)  
Старый 29.09.2017, 03:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

j0hnik,
да ну может в 6 раз меньше
Ответить с цитированием
  #9 (permalink)  
Старый 29.09.2017, 03:05
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

ты умеешь заинтриговать
Ответить с цитированием
  #10 (permalink)  
Старый 29.09.2017, 03:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

j0hnik,
если по точкам в коде считать, то вместо 5 точек будет одна.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск