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

(JavaScript) Нужно найти количество чисел, у которых сумма цифр, равна данному числу
Задача такая: определить количество М-значных натуральных чисел, у которых сумма цифр, стоящих в нечетных разрядах, равна N (1<N<90, 5<M<20)

Я решаю ее таким образом: например, M=5 => рассматриваем отрезок [10000;99999]. Каждое число перевожу в строковый тип, разбиваю на цифры и заношу в ассоциативный массив. При этом с помощью .shift удаляю 0-ой элемент, передвигая строку. Далее нахожу нечетный разряд и сравниваю с числом N.

Проблема в том, что я видимо не правильно заношу в массив, но как исправить, без понятия. Объясните, пожалуйста!

function calculation(M,N){
  for (var k=Math.pow(10,M-1);k<=Math.pow(10,M)-1;k++){
   var chisla = [];
   K = String(k);
   for (var i=1;i<=M;i++){
     chisla[String(i)] = K[0];
     K = chisla.shift();
   }
   var sum = 0;
   for (i=1;i<=M;i++){
    if (i%2==1){
     sum = sum+Number(chisla[String(i)]);
    }
   }
   if (sum==N){
    kol=kol+1;
   }
  }
  return kol;
 }

Последний раз редактировалось ProgYoung, 11.05.2019 в 22:26.
Ответить с цитированием