Вводятся два числа N и K. Выведите количество чисел из диапазона от 1 до N включительно таких, что их сумма цифр делится на K. - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Вводятся два числа N и K. Выведите количество чисел из диапазона от 1 до N включительно таких, что их сумма цифр делится на K. Формат ввода: В единственной строке ввода два числа, записанные через пробел – N и K. Формат вывода: Одно число – ответ на задачу. Ограничения: Все числа натуральные, не превышающие 3000.

Решение задачи: «Вводятся два числа N и K. Выведите количество чисел из диапазона от 1 до N включительно таких, что их сумма цифр делится на K.»

textual
Листинг программы
uses crt;
 
var i,j,m,nn,n,k:integer;
    s:string;
begin
   write('Введите N и K: ');
   readln(n,k);
   if n>3000 then n:=3000;
   for i:=1 to n do
   begin
      str(i,s);
      m:=0;
      for j:=1 to SmallInt(s[0]) do m:=m+ord(s[j])-48;
      if m mod k=0 then
      begin
         nn:=nn+1;
         //writeln(i:4,' ',m:2);//для проверки
      end;
   end;
   writeln('Вариантов: ',nn);
 
   readln;
end.

Объяснение кода листинга программы

  1. Вводится два числа N и K.
  2. Если N больше 3000, то N устанавливается равным 3000.
  3. Переменная s инициализируется пустой строкой.
  4. Цикл for проходит от 1 до N.
  5. Внутри цикла переменная s заполняется числом i в десятичной системе счисления.
  6. Переменная m инициализируется нулем.
  7. Цикл for проходит по каждой цифре числа i.
  8. Внутри цикла к переменной m прибавляется разница между ASCII-кодом текущей цифры и 48 (код цифры 1).
  9. Если результат от деления m на K равен нулю, то выполняется следующий код.
  10. Переменная nn увеличивается на единицу.
  11. Выводится i и m (для проверки).
  12. По завершении циклов выводится количество вариантов (nn).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы