[Programming Basics] Exam - 7 May 2017 - Задача 6. Генератор на числа
Здравейте,
Ето кода, който опитвам - https://pastebin.com/xtKBLHAv
Ако премахнете коментарите ясно ще видите, при кои числа как изчислява.
Задача 6. Генератор на числа
Да се напише програма, която прочита от конзолата три цели числа – M, N и L, и генерира всички числа в диапазона от MNL до 111. От конзолата се чете едно специално и едно контролно число. За всяка комбинация от тройката числа се прави проверка:
1.Ако се дели на 3 без остатък – към специалното число се добавя 5;
2.Ако завършва на 5 – от специалното число се вади 2;
3.Ако е четно число – специалното число се умножава по 2.
Трябва да се има предвид, едно число може да отговаря на повече от една проверка. В такъв случай трябва да се гледа приоритетът на операциите. Първо дали се дели на 3, после дали завършва на 5 и накрая дали е четно числото. Например:
972 се дели на 3 и е четно. В такъв случай изпълняваме само операцията с най-голям приоритет и към специалното число добавяме 5, но НЕ го умножаваме по 2 след това.
315 се дели на 3 и завършва на 5. Към специалното число добавяме 5.
В случай, че не отговаря на нито една от посочените проверки, НЕ се извършва операция и програмата продължава. Ако специалното число стане равно или по-голямо от контролното програмата приключва.
Вход
От конзолата се четат 5 числа, всяко на отделен ред:
1.М – цяло число в интервала [1 … 9]
2.N– цяло число в интервала [1 … 9]
3.Lцяло число в интервала [1 … 9]
4.Специално число – цяло число в интервала [0 … 100]
5.Контролно число – цяло число в интервала [0 … 1000]
Изход
Отпечатването на конзолата зависи от резултата:
- Ако контролното число е достигнато се отпечатват 1 ред:
- “Yes! Control number was reached! Current special number is {специалното число}.”
- Ако контролното число НЕ е достигнато се отпечатва 1 ред:
- “No! {специалното число} is the last reached special number.”
Примерен вход и изход
Вход |
Изход |
Обяснения |
9 7 3 2 44 |
Yes! Control number was reached! Current special number is 48. |
973 – не се дели на 3, не завършва на 5 и не е четно => върху него не се извършват никакви операции. Специалното число е по-малко от контролното и програмата продължава. 972 - дели се на 3 => 2 + 5 = 7. Специалното число е по-малко от контролното и програмата продължава. 971 – не отговаря на условията и не се извършват операции 963 - дели се на 3 => 7 + 5 = 12 962 - четно => 12 * 2 = 24 961 - не отговаря на условията и не се извършват операции … 952 - четно => 24 * 2 = 48 48 >= 44 |
Вход |
Изход |
Обяснения |
1 1 7 1 308 |
No! 35 is the last reached special number. |
117 - дели се на 3 => 1 + 5 = 6 116 - четно => 6 * 2 = 12 115 - завършва на 5 => 12 – 2 = 10 114 - дели се на 3 => 10 + 5 = 15 113 - не отговаря на нито една проверка и програмата продължава 112 - четно => 15 * 2 = 30 111 - дели се на 3 => 30 + 5 = 35 35 < 308 |
Моля кажете къде бъркам.
Предварително благодаря!!!
Задачата е от минал изпит. bool flag-а ми дава приоритет при различните условия - така се сетих, така го направих (сигурно може и по друг начин). С този код judge ми дава 50 %.
bool flag не прави никаква промяна ако се изпълни някои if после не се изпълнява else. дай линк към judge
Ето линк към Judge: https://judge.softuni.bg/Contests/Practice/Index/540#5