Задача The song of the wheels от Nested Loops - More Exercises - 60/100 в judge
Здравейте отново от мен, колеги,
Някой може ли да ми помогне в откриването на грешката ми в кода? Примерните изходи ми излизат, но judge ми дава 60/100.
Условието:
12.Песента на колелетата
Прапраправнукът на Сали Яшар е получил наследство - сейф с парола - четири цифри. В него е заключена тайната на пеещите каруци. Той има автосервиз и се нуждае от реклама, затова е решил да направи такава каруца. Проблема е, че паролата е скрита в следната задача:
„Парола ще получиш, ако знаеш едно цяло число, контролна стойност се нарича то,
почива в интервала от 4 до 144 включително, но да го откриеш може би ще е мъчително. ”
Паролата има формат: "abcd" и контролната стойност трябва да е равна на a*b + c*d , но трябва да бъдат спазени следните условия:
- при намирането на а и b: a < b
- при намиране на c и d: c > d
- a, b, c и d са числа в интервала [1 - 9]
Каруцата има четири колела, затова паролата ще е четвърто число, което трябва да се отпечата.
В случай, че НЕ се намери такова число, отпечатва се „No!“.
Вход
От конзолата се чете едно цяло число (контролната стойност): M – цяло число в интервала [4 … 144];
Изход
Отпечатването на конзолата зависи от резултата:
- Ако са намерени четворки числа (аbcd), отговарящи на условието, ги отпечатваме всичките с разделител интервал: “{а}{b}{c}{d} ”
- Отпечатва се един от двата реда на нов ред:
- Ако съществува четвърта четворка се отпечатва: „Password: {а}{b}{c}{d}“
- Ако НЕ са намерени такива числа или няма четвърта четворка отпечатваме: “No!”
Примерен вход и изход
Вход |
Изход |
Обяснения |
|||
11
|
1291 1342 1381 1471 1532 1561 1651 1741 1831 1921 2351 2431 Password: 1471 |
Започваме да проверяваме числата последователно: {1} {1} {1} {1}; {1} {1} {1} {2}; {1} {1} {1} {3}; …; {1} {2} {9} {1}; … четворката 1291 спазва условието и отпечатваме и т.н. |
|||
Вход |
Изход |
Вход |
Изход |
Вход |
Изход |
139 |
No! |
110
|
6987 7896 No! |
55
|
1786 2595 3585 3974 4575 4793 5754 5853 5952 6871 Password: 3974 |
Благодаря ти много! Но ще можеш ли да ми обясниш защо моето решение е грешно, след като ми се получават примерните изходи? Защото мисля, че просто да препиша твоите препоръки само, за да получа 100/00, не е ок.
Сега се задълбочих повече върху твоето решение и всъщност то ще проработи напълно коректно само с премахване на проверката if ((M >= 4) && (M <= 144)), защото реално нямаш нужда от такава - по условие е гарантирано, че контролната стойност ще бъде в тези граници. И освен това има нужда от добавяне на Console.WriteLine(); и в elsa накрая, защото и тук трябва да минеш на нов ред както и в if-a преди това:
else
{
Console.WriteLine();
Console.WriteLine("No!");
}
Иначе е много добре, че не искаш просто да преписваш моите препоръки - поздравления за това, така и трябва. А това, че ти се получават примерните изходи не е точно така, защото точно при третия пример "No!" остава на същия ред след "6987 7896" и тук вече гърми. Това би трябвало да го видиш при изпълнението на този пример от условието. Също и ако имаш коректни изходи на всички примери от условието не означава, че и всички останали заложени тестове ще минат - дадените в условието примери покриват само част от всички други случаи, които се тестват от Judge. Надявам се да съм успял да ти обясня каквото имаше нужда.
Дааааааа, изключително много ти благодаря за отделеното време! :))))