Задачата може да се раздели на четири логически части:
Първата част е тривиална - прочитаме три цели числа от конзолата, съответно ще използваме тип int
.
С втората част също сме се сблъсквали - инициализиране на for
цикъл. Тук има малка уловка - в условието е споменато, че числата трябва да се принтират в обратен ред. Това означава, че началната стойност на променливата i
ще е по-голямото число, което от примерите виждаме, че е M. Съответно, крайната стойност на i
трябва да е N. Фактът, че ще печатаме резултатите в обратен ред и стойностите на i
ни подсказват, че стъпката ще е намаляване с 1.
След като сме инициализирали for
цикъла, идва ред на третата част от задачата - проверка на условието дали даденото число се дели на 2 и на 3 без остатък. Това ще направим с една обикновена if
проверка, която ще оставим на читателя сам да построи.
Другата уловка в тази задача е, че освен горната проверка, трябва да направим още една - дали числото е равно на “спиращото” число, подадено ни от конзолата на третия ред. За да се стигне до тази проверка, числото, което проверяваме, трябва да премине през горната. По тази причина ще построим още една if
конструкция, която ще вложим в предходната. Ако условието е вярно, заданието е да спрем програмата да печата, което в конкретния случай можем да направим с оператор break
, който ще ни изведе от for
цикъла.
Съответно, ако условието на проверката дали числото съвпада със “спиращото” число върне резултат false
, по задание нашата програма трябва да продължи да печата. Това всъщност покрива и четвъртата и последна част от нашата програма.
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/515#2.