Песента на колелетата - не отпечатвам четвъртата четворка
Условието е следното:
- Песента на колелетата
Прапраправнукът на Сали Яшар е получил наследство - сейф с парола - четири цифри. В него е заключена тайната на пеещите каруци. Той има автосервиз и се нуждае от реклама, затова е решил да направи такава каруца. Проблема е, че паролата е скрита в следната задача:
„Парола ще получиш, ако знаеш едно цяло число, контролна стойност се нарича то,
почива в интервала от 4 до 144 включително, но да го откриеш може би ще е мъчително. ”
Паролата има формат: "abcd" и контролната стойност трябва да е равна на a*b + c*d , но трябва да бъдат спазени следните условия:
- при намирането на а и b: a < b
- при намиране на c и d: c > d .
Каруцата има четири колела, затова паролата ще е четвърто число, което трябва да се отпечата.
В случай, че НЕ се намери такова число, отпечатва се „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 |
Моето решение е:
using System;
public class Program
{
public static void Main()
{
int numberA = 0;
int numberB = 0;
int numberC = 0;
int numberD = 0;
int count = 0;
int numberControl = int.Parse(Console.ReadLine());
for (numberA = 1; numberA <= 9; numberA++)
{
for (numberB = 0; numberB <= 9; numberB++)
{
for (numberC = 0; numberC <= 9; numberC++)
{
for (numberD = 0; numberD <= 9; numberD++)
{
if((numberControl == numberA * numberB + numberC * numberD) && ((numberA < numberB) && (numberC > numberD)))
{
Console.Write("{0}{1}{2}{3} " ,numberA ,numberB, numberC, numberD);
count = count + 1;
}
}
}
}
}
if (count == 4)
{
Console.Write("Password: {0}{1}{2}{3} " ,numberA ,numberB, numberC, numberD);
}
else
{
Console.Write("No!");
}
}
}
Дайте насоки къде бъркам и как да отпечатам четвъртата четворка. Благодаря предварително!
Здравейте,
само една оптимизация по кода, ако може да вметна, с цел да се въртят по-малко циклите
Поздрави :)
Много благодаря за корекциите и поясненията. Да спомена, че не използвам този начин за отпечатване с $ , поради факта, че не използвам VS, a онлайн платформата https://dotnetfiddle.net/ , която не го поддържа, a от там и не мога да дебъгвам.
Благодаря!
Добра идея за оптимизация! Благодаря, но все пак нещо не е както трябва, защото се променя коректния резултат.
Ето ти друго решение, резултатите излизат: https://pastebin.com/zQenKvbe