Loading...
ArmenPotourlyan+deleted! avatar ArmenPotourlyan+deleted! 488 Точки

Аз съм я написал с for цикъл, с който да достъпвам масива, и вложен while цикъл за събирането на последните k елемента (може и с for цикъл). Специфичното е, че във вложения цикъл имам проверка, за да не излезна от рамките на масива (IndexOutOfRangeException):

if (index - count < 0)
    break;

Count ми е броячът във вложения цикъл.

0
Ivanov.Ivan avatar Ivanov.Ivan Trainer 558 Точки

Защо не пробваш с един for - loop който да обхождаш масива отзад на пред?

Пример:

ulong sum = 0;

for(int i = arr.Length - 1; i >= arr.Length - K; i--)

{

 sum += arr[i];

}

Успех

1
tpettrov avatar tpettrov 4 Точки

В крайна сметка се получи с налучкване. Иначе бях в правилната посока. Сега ще дебъгвам да разбера защо, но това долу работи коректно. Благодаря за подкрепата ! Бяха дълги 3 часа :)

 

 int n = int.Parse(Console.ReadLine());
            int k = int.Parse(Console.ReadLine());


             var array = new long[n];
                array[0] = 1;
            
            for (int current = 1; current < n; current++)
            {
                var start = Math.Max(0, current - k);
                var end = current - 1;
                long sum = 0;

                for (int i = start; i < n; i++ )
                {
                    sum +=array[i];
                }

                array[current] = sum;

            }

            Console.WriteLine(string.Join(" ", array));

 

1
petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки

Лично за мен тази задачка не беше много на мястото си още в самото начало за масиви без да сме им свикнали. Като стигнах до нея и не успях да измисля какво се иска от нас, си виках леле мале, къде се намирам. Задачките след нея ми бяха доста по-лесни от тази.

1
onefen avatar onefen 27 Точки

За да ти даде пълните 100 точки направи си масива да ти е от тип long[] и сумата ти също да е от тип лонг, като след нулата добавиш задължително едно главно L, иначе ще стане int, а ако го добавиш това L, а оставиш масива int[] ще ти даде грешка заради несъвместимите типове. Ако сумата ти е ulong трябва да напишеш ulong sum = 0UL;  ,но в такъв случай трябва и масива ти да е ulong, т.е. да не съдържа отрицателни числа, което не е изрично опоменато в условието и може да ти изгърми някой тест.

Ето тези два реда напиши вместо твоите и го пробвай така в judgeto.

long[] sequence = new long[n];

long sum = 0L;

0
08/06/2016 19:00:18
Aguzelov avatar Aguzelov 78 Точки
class LastKNumbersSums
    {
        static List<long> sequence = new List<long>();

        static void AddToSequence(int numOfPrevious)
        {
            if(sequence.Count < numOfPrevious)
            {
                long sum = 0;
                foreach(long num in sequence)
                {
                    sum += num;
                }
                sequence.Add(sum);
            }
            else
            {
                long sum = 0;
                for(int i = sequence.Count-1; i >= sequence.Count-numOfPrevious; i--)
                {
                    sum += sequence[i];
                }
                sequence.Add(sum);
            }
        }

        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());

            int k = int.Parse(Console.ReadLine());

            sequence.Add(1);

            for(int i = 0; sequence.Count < n; i++)
            {
                AddToSequence(k);
            }
            foreach(long num in sequence)
            {
                Console.Write(num + " ");
            }

        }
    }

 

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