Вводятся два числа 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.
Объяснение кода листинга программы
- Вводится два числа N и K.
- Если N больше 3000, то N устанавливается равным 3000.
- Переменная s инициализируется пустой строкой.
- Цикл for проходит от 1 до N.
- Внутри цикла переменная s заполняется числом i в десятичной системе счисления.
- Переменная m инициализируется нулем.
- Цикл for проходит по каждой цифре числа i.
- Внутри цикла к переменной m прибавляется разница между ASCII-кодом текущей цифры и 48 (код цифры 1).
- Если результат от деления m на K равен нулю, то выполняется следующий код.
- Переменная nn увеличивается на единицу.
- Выводится i и m (для проверки).
- По завершении циклов выводится количество вариантов (nn).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д