[Programming Basics] Задача 6 от изпита на 07 Май 2017 - възможна грешна интерпретация на условието
Здравейте,
след като изкарах Programming Basics на Java, реших да си реша изпита и на C#. Стигайки до задача 6 реших да я реша по друг начин от този, който използвах на изпита и установих, че е възможно условието да бъде подвеждащо за някой. Там пише "Да се напише програма, която прочита от конзолата три цели числа – M, N и L, и генерира всички числа в диапазона от MNL до 111".
Нека вземем за пример числата в първият нулев тест - М = 9, N = 7 и L = 3. Четейки буквално условието трябва да генерираме числата от 973 до 111. Можем да го направим като преобразуваме входните 3 числа до 1 трицифрено (в случая 973) и пуснем един обратен (намаляващ) for-цикъл от трицифреното число (в случая 973) до 111. Това ще генерира следната поредица от числа: 973, 972, 971, 970, 969 и т.н., върху които със if-проверки да извършим останалите манипулации описани в условието.
Това решение, макар и следващо условието цитирано по-горе се счита за грешно от judge. За да стигнем до верните отговори трябва да направим 3 цикъла, които съответно броят от М до 1, от N до 1 и от L до 1. Това обаче генерира следната поредица от числа (пак спрямо горния пример): 973, 972, 971, 963 , 962, 961, 953, 952, 951 и т.н., което може да се счете за не много отговарящо на цитираното условие, защото пропуска доста от числата между 973 и 111.
Та това е, ако автора на задачата прочете това може да реши, че условието трябва да се поправи, а може и аз да не го тълкувам правилно сега, след като на изпита си го реших по правилния за judge начин и даже не ми хрумна другото тълкование.
Приятна вечер