Nested Loops - Exercise
Здравейте!
Имам проблем със задача 05. Equal Sums Left Right Position (Еднакви суми на леви и десни позиции). Zero тестовете ми минават, но Judge ми дава 80/100, като на два от тестовете ми изписва: Test #6 (Memory limit) и Test #8 (Memory limit). Номера на решението е следния: Solution #10731877. Ето и кода ми, моля да помогнете - къде бъркам?
using System;
namespace _05._Equal_Sums_Left_Right_Position
{
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
int m = int.Parse(Console.ReadLine());
for (int i = n; i <= m; i++)
{
int leftSum = 0;
int rightSum = 0;
int midDigit = 0;
for (int j = 0; j < 5; j++)
{
string number = i.ToString();
char currentSymbol = number[j];
int currentDigit = int.Parse(currentSymbol.ToString());
if (j == 0 || j == 1)
{
leftSum += currentDigit;
}
else if (j == 3 || j == 4)
{
rightSum += currentDigit;
}
else if (j == 2)
{
midDigit = currentDigit;
}
}
if (leftSum == rightSum)
{
Console.Write(i + " ");
}
else
{
if (leftSum < rightSum)
{
leftSum += midDigit;
if (leftSum == rightSum)
{
Console.Write(i + " ");
}
}
else if (rightSum < leftSum)
{
rightSum += midDigit;
if (leftSum == rightSum)
{
Console.Write(i + " ");
}
}
}
}
}
}
}
p.s. Още една идея - дори работи по-оптимално - паметта е намалена двойно - Memory: 8.21 MB.
Вместо да се ползва стринговане и парсване взимаш цифрите по стандартен начин и отново 100/100:
string number = i.ToString();
int dig5 = int.Parse(number[0].ToString());
В началото исках да ти запзая твоята идея, но явно ползва повече памет...
int dig5 = i % 10;
int dig4 = i / 10 % 10;
int dig3 = i / 100 % 10;
int dig2 = i / 1_000 % 10;
int dig1 = i / 10_000 % 10;
Поздрави,
Иван