Задачи по Pascal. Найти наименьшее натуральное число сумма цифр которого равна n

Задачи по Pascal

Условие задачи :  Найти наименьшее натуральное число сумма цифр которого равна n

Сложность : легкая .

Решение задачи :

Для начала продумаем наше решение. Самое наименьшее число здесь это число которое будет первым, т.е. мы пустим цикл и в нем найдем сумму цифр затем сравним её с суммой которую ввел пользователь.

Допустим нам надо найти наименьшее натуральное число сумма цифр которого равна 3.

Вот мы сделали цикл и первое такое число будет 12 (1 + 2) , дальше 21 (2 + 1) , затем 30 (3 + 0), хоть как наименьшее будет 12. И так для любого числа.

ак только мы найдем число у которого сумма цифр равна n, просто выйдем из цикла и всё.

До начала решения задачи почитайте как найти суммы цифр в числе (тут).

И так погнали, надо подумать какие переменные нам нужны :

  1. Переменная n.
  2. Переменная для суммы цифр — summa
  3. Переменная счетчик для цикла for — i
  4. Переменная в которой мы будем хранить число у которого будем искать сумму цифр — j
var
   j , i , n , summa : integer;

Теперь попросим попросим пользователя ввести сумму цифр :

write('Введите сумму чисел <= 27: '); readln(n);

Много чисел брать не будем, если хотите можете взять много, я сделаю от 1 до 27, т.е. цикл у меня будет от 10(1+0) до 999(9+9+9)

for i:=10 to 999 do
   begin
      j := i ;
      summa := 0 ;
      while j > 0 do
         begin
            summa := summa + (j mod 10);
            j := (j div 10);
         end;
    end;

И так, вот мы пустили цикл, в нём мы сразу присвоили j := i , чтобы у нас было число с котором работать, дальше обнулили сумму, если этого не сделать то каждый раз сумма будет увеличиваться. Затем мы просто нашли с помощью цикла while, сумму цифр.

И теперь нам нужно условие которое будет проверять равна ли найденная нами сумма цифр , сумме цифр введенной пользователем :

if summa = n then
        begin
            writeln('Наименьшее число : ', i);
            break;
        end;

Т.е. если найденная нами сумма цифр равна сумме цифр введенной пользователем, то мы выводим это число и выходим из цикла.

Всё решение задачи Pascal :

uses crt;
var
   j , i , n , summa : integer;

begin
clrscr;

write('Введите сумму чисел : '); readln(n);

for i:=10 to 999 do
   begin
      j := i ;
      summa := 0 ;
      while j > 0 do
         begin
            summa := summa + (j mod 10);
            j := (j div 10);
         end;
      if summa = n then
        begin
            writeln('Наименьшее число : ', i);
            break;
        end;
   end;

readln;
end.

cyber
Оцените автора
CyberLesson | Быстро освоить программирование Pascal и C++. Решение задач Pascal и C++
Добавить комментарий