Loading...
Hristo_Penchev avatar Hristo_Penchev 389 Точки

[Exam Problems] C# Basics - Nine-DIgit Magic Numbers - OutOfMemoryException

Написах кода на задачата и в конзолата работи нормално. Разбира се, няма как ръчно да проверя дали е намерило всички числа, отговарящи на условието, но тези, които ги намира, отговарят. Но при опит за тест ми изведе следната грешка:

 

Първоначално предположих, че програмата е прекалено голяма, но реално заема 8 МБ. И не мога да разбера какво се случва. Втора задача, за която конзолата и Judge дават различен аутпут.

Zero test #1 (Runtime error)

The zero tests are not included in the final result.
Unhandled Exception: OutOfMemoryException.
Time used: 0.012 s
Memory used: 8.79 MB

 

Надолу можете да видите и кода. Нищо сложно - с девет цикъла един в друг вадя всяко едно деветцифрено число, съдържащо цифри 1-7. Записвам числата в масив и ги сортирам в друг.

 

using System;


    class NineDigitMagicNumbers
    {
        static void Main()
        {
            int sum = int.Parse(Console.ReadLine());
            int diff = int.Parse(Console.ReadLine());
            int a,b, c, d, e, f, g, h, i = 0;
            int[] container = new int[41000000];
            int magicCounter = 0;
            int abc, def, ghi;
            for(int j1=1; j1<=7; j1++)
            {
                a = j1;
                for(int j2=1; j2<=7; j2++)
                {
                    b = j2;
                    for(int j3=1; j3<=7; j3++)
                    {
                        c = j3;
                        for (int j4 = 1; j4 <= 7; j4++)
                        {
                            d = j4;
                            for(int j5=1; j5<=7; j5++)
                            {
                                e = j5;
                                for(int j6=1; j6<=7; j6++)
                                {
                                    f = j6;
                                    for(int j7=1; j7<=7; j7++)
                                    {
                                        g = j7;
                                        for(int j8=1; j8<=7; j8++)
                                        {
                                            h = j8;
                                            for(int j9=1; j9<=7; j9++)
                                            {
                                                i = j9;
                                                abc = 100 * a + 10 * b + c;
                                                def = 100 * d + 10 * e + f;
                                                ghi = 100 * g + 10 * h + i;
                                                if(((ghi-def) == (def-abc))&&((def-abc) == diff)&&(a+b+c+d+e+f+g+h+i == sum)&&(abc <= def)&&(def <= ghi) )
                                                {
                                                    int abcdefghi = a * 100000000 + b * 10000000 + c * 1000000 + d * 100000 + e * 10000 + f * 1000 + g * 100 + h * 10 + i;
                                                    container[magicCounter] = abcdefghi;
                                                    magicCounter++;
                                                }

                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (magicCounter > 0)
            {
                int[] displayNumbers = new int[magicCounter];
                for (int j = 0; j < magicCounter; j++)
                {
                    displayNumbers[j] = container[j];
                }
                Array.Sort(displayNumbers);
                for (int j = 0; j < magicCounter; j++)
                {
                    Console.WriteLine(displayNumbers[j]);
                }
            }
            else Console.WriteLine("No");
            
        }
    }

Тагове:
-6
Programming Basics 21/08/2014 10:47:19
Anonymous:
Има отворена тема за задачата: https://softuni.bg/forum/questions/details/810
Нарушена т.12 отПравилата на форума
HPetrov avatar HPetrov 822 Точки

Използвай някакво repository където да си качваш кода и само да предоставяш линк към него. Силно ти препоръчвам PasteBin.

3
cvetant avatar cvetant 75 Точки

Ето и моето решение.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.