Nested Loops More Exercises - 12. The song of the wheels
Здравейте,
ако може някой по-напред с материала да ми помогне с тази задача.В judge ми дава 80/100 и не разбирам кое условие пропускам.Намерих и друго решение в интернет което е написано малко по-различно от моя код и минава 100/100 в judge, дебъгвах и двете и не виждам никаква разлика.
Песента на колелетата
Прапраправнукът на Сали Яшар е получил наследство - сейф с парола - четири цифри. В него е заключена тайната на пеещите каруци. Той има автосервиз и се нуждае от реклама, затова е решил да направи такава каруца. Проблема е, че паролата е скрита в следната задача:
„Парола ще получиш, ако знаеш едно цяло число, контролна стойност се нарича то,
почива в интервала от 4 до 144 включително, но да го откриеш може би ще е мъчително. ”
Паролата има формат: „abcd“ и контролната стойност трябва да е равна на a*b + c*d , но трябва да бъдат спазени следните условия:
при намирането на а и b: a < b
при намиране на c и d: c > d .
Каруцата има четири колела, затова паролата ще е четвърто число, което трябва да се отпечата.
В случай, че НЕ се намери такова число, отпечатва се „No!“.
Вход
От конзолата се четe едно цяло число (контролната стойност): M – цяло число в интервала [4 … 144];
Изход
Отпечатването на конзолата зависи от резултата:
Ако са намерени четворки числа (аbcd), отговарящи на условието, ги отпечатваме всичките с разделител интервал: “{а}{b}{c}{d} ”
Отпечатва се един от двата реда на нов ред:
Ако съществува четвърта четворка се отпечатва: „Password: {а}{b}{c}{d}“
Ако НЕ са намерени такива числа или няма четвърта четворка отпечатваме: “No!”
Ето го моят код:
using System;
namespace _12._The_song_of_the_wheels
{
class Program
{
static void Main(string[] args)
{
int controlValue = int.Parse(Console.ReadLine());
int count = 0;
bool fourth = false;
int i = 0;
int j = 0;
int k = 0;
int l = 0;
bool trueRow = false;
for (int a = 1; a <= 9; a++)
{
for (int b = 1; b <= 9; b++)
{
for (int c = 1; c <= 9; c++)
{
for (int d = 1; d < 9; d++)
{
if (a * b + c * d == controlValue && a < b && c > d)
{
trueRow = true;
count++;
Console.Write($"{a}{b}{c}{d} ");
if ((a == 4 || b == 4 || c == 4 || d == 4) && (count == 4))
{
fourth = true;
i = a;
j = b;
k = c;
l = d;
}
}
}
}
}
}
if (trueRow)
{
Console.WriteLine();
}
if (fourth)
{
Console.WriteLine($"Password: {i}{j}{k}{l}");
}
else
{
Console.WriteLine("No!");
}
}
}
}
Благодаря, видях още в условието съм се объркал но с примерните входове ми даваше правилен изход и затова търсих грешката другаде.
И аз закъсах на тази. 90/100 и вече не сещам какво да опитам. Решението ми е това:
https://pastebin.com/j4bLRuix
П.С.
пробвах да печатам паролата и като string и int и резултатът всеки път е този. Някой може ли да помогне?
Благодаря!!!
@s.boyadjiev, вероятно причината за грешката ти е, че всичките ти цикли започват от нула, вместо от 1. Не се разбира от условието на задачата, но от обяснението на примерния вход/изход се вижда, че нулата не я включват като възможна цифра в паролата.... Ако искаш пробвай!