Loading...
d3vildog avatar d3vildog 58 Точки

[Exam Problems] C# Basics - Въпрос по задача {4} Crossing Sequences (11 Април Вечерта)

Здравейте,

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

Also, let the number spiral start with 5 and have a step of 2; it then contains he numbers 5, 7, 9, 13, 17, 23, 29, 37, etc. Since 37 is the first number that is both in the Tribonacci sequence and in the spiral, it is the answer.

даден е пример но не е обяснено как точно става, предполагам е доста лесно, но аз не мога да го схвана ако някой може да обясни ще съм му много благодарен smile

Тагове:
1
Programming Basics
yankozlatanov avatar yankozlatanov 10 Точки

Здравейте колеги,

Като начинаещ реших да се пробвам на тази задача, но стигнах само до тука : http://pastebin.com/WDtnN1LU

Успях да направя така че да принтирам поредицата от числата. 

Сега ми остава само да намеря кога се засичат и колко пъти да се върти всеки for цикъл :P .

Моля за някаква насока как да стане това, със array и foreach или има друг метод ?

Благодаря Ви предварително !

0
16/11/2014 09:52:15
Filkolev avatar Filkolev 4482 Точки

Ако предположим, че алгоритмите ти за намиране на двете поредици са верни (а доколкото на пръв поглед виждам са), може да ползваш два списъка, в които да ги пълниш. Разгледай как се ползва List. След това е сравнително лесно, вървиш по единия списък и спираш щом засечеш елемент, който го има и в другия. Аз лично така реших задачата, не е най-доброто сигурно, но работи.

По-ефикасният начин, за който се сещам, но и по-трудният за осмисляне, е да увеличаваш двете редици и да спреш, когато намериш първия общ елемент. Пипкаво е, защото не ги увеличаваш едновременно редиците, а една след друга според някакви условия.

1
yankozlatanov avatar yankozlatanov 10 Точки

Мерси за идеите :)

Ще опитам първо с list и после може да си поиграя с увеличаване на  циклите.

0
GalyaGeorgieva avatar GalyaGeorgieva 88 Точки

Скъсах си нервите и не мога да намеря къде ми са тези 9 точки до 100. Въпросът вече е на чест :)
Ще може ли някой да ми погледне кода ТУК.

0
AntonPortenov avatar AntonPortenov 102 Точки

Здравей, и моята идея е нещо подобно. След решението установих, че judge ми дава 100/100 но не влизам във времевата рамка.

"100 / 100Памет: 12.05 MB
Време: 0.450 s"

Въпроса ми е следния:

Счита ли се това за вярно решение или не?

прилагам и кода си.

http://pastebin.com/f8WwyNAj

0
Filkolev avatar Filkolev 4482 Точки

След като не покриваш официално поставените изисквания за време и памет значи решението ти не е напълно правилно. Един вариант е системата да се е бъгнала за дадения събмит, просто пробваш няколко пъти, може и да мине. Другият вариант е да оптимизираш малко нещата.

0
minspi avatar minspi 1 Точки

Може ли някой да ми каже каде ми е грешката и за защо не тръгва следния код ? Благодаря предварително ! 

using System;

class Example
{
    static void Main()
    {
        int t1 = int.Parse(Console.ReadLine());
        int t2 = int.Parse(Console.ReadLine());
        int t3 = int.Parse(Console.ReadLine());

        int d = int.Parse(Console.ReadLine());
        int e = int.Parse(Console.ReadLine());

        bool increasePower = false;
        int power = 1;
        int s = 0;
        if (t1 < 0 || t2 < 0 || t3 < 0 || t1 > 1000000 || t2 > 1000000 || t3 > 1000000)
        {
            Console.WriteLine("No");
        }
        while (true)
        {
            int sum = t1 + t2 + t3;
            t1 = t2;
            t2 = t3;
            t3 = sum;

            d += e * power;
            if (increasePower)
            {
                power++;
            }
            increasePower = !increasePower;

            if (d == sum || d == t2 || d == t3 || d == t1)
            {
                s = sum;
                break;
            }
        }
        Console.WriteLine(s);
    }
}

0
AntonPortenov avatar AntonPortenov 102 Точки

Така като гледам проблема ти е че loop-а ти е безкраен. Програмата тръгва, но нямаш изход от loop-a. 

If услоявията ти трябва да са вътре с един break. Другия ти проблем е от увеличаването на стъпките. На матрицата се усвеличава през 2 а не през един цикъл. Например тръгва от 5 , стъпка 2. Имаш 5(начало), завой, 7, завой, 9, от тук вдигаме стъпката и т.н.

Най-големия ти проблем е че ги сръвняваш постоянно на всяко завъртане, но стъпката се увеличава с 2,2,3,3 и на 4тия ход стъпката ще ти е 17 а трибоначито ще е 37. 

Най добре на всяко завъртане на стъпката да проверяваш има ли такова число като цикъла върти докато не го подминеш за да си спестиш ресурси

 

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