Loading...

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

MartinBG avatar MartinBG 4803 Точки

Програмата ще гърми с IndexOutOfRangeException при вход, по-малък от 3, заради:

        private static void Calculation(int[] tribonacci)
        {
            tribonacci[0] = tribonacci[1] = 1;
            tribonacci[2] = 2;

Ето един вариант за заобикаляне на проблема:

        static void Main(string[] args)
        {
            int lenght = int.Parse(Console.ReadLine());
            int[] tribonacci = new int[Math.Max(lenght, 3)]; // <-
            Calculation(tribonacci);
 
            for (int i = 0; i < lenght; i++) // <-
            {
                Console.Write($"{tribonacci [i]} ");
            }
        }

 

2
Nikolamv95 avatar Nikolamv95 4 Точки

Здравей и благодаря за отговора, след направената промяна отново дава 80 точки.

1
RoumenRoussev avatar RoumenRoussev 121 Точки

Вариант за сравнение на логиката:

using System;
using System.Numerics;

namespace _04.TribonacciSequence_3
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());

            BigInteger[] result = TribonacciNumbers(n);

            Console.WriteLine(String.Join(' ', result));
        }

        private static BigInteger[] TribonacciNumbers(int n)
        {
            BigInteger[] result = new BigInteger[n];

            switch (n)
            {
                case 1:
                    result[0] = 1;
                    break;
                case 2:
                    result[0] = 1;
                    result[1] = 1;
                    break;
                case 3:
                    result[0] = 1;
                    result[1] = 1;
                    result[2] = 2;
                    break;
                default:
                    result[0] = 1;
                    result[1] = 1;
                    result[2] = 2;
                    for (int i = 3; i < n; i++)
                    {
                        BigInteger currNum = result[i - 3] + result[i - 2] + result[i - 1];
                        result[i] = currNum;
                    }
                    break;
            }

            return result;
        }
    }
}

0
Nikolamv95 avatar Nikolamv95 4 Точки

Благодаря, разбрах какъв е проблема :). Също така задачата се получи с uint, така че не е нужно да се използва BigInteger.

0
vladislavtodorov avatar vladislavtodorov 8 Точки

На мен идеята на MartinBG , че има вход по-малък от три ми свърши работа, благодаря.

Аз имах този проблем: грешка при изпълнение на 5 и 6 тест. Предполагах, че бъркам с обхвата на типовете и безуспешно се потих с BigInteger, но ето, че изобщо не бил там проблема. А за мое учудване минах и без  BigInteger.

Сега като се замисля: май правя лош анализ на посочените от judge грешки. Май надхвърлянето на обхват на променливи води(разбира се) до грешни резултати, но не и до грешки при изпълнение.

Сега работи: 

https://pastebin.com/N4djhRpc

Моля ви не се смейте на многото коментари в кода, идеята ми е да помогна на някои.

Нося и на критика с уговорката, колкото мога, толкова кодя. Повечето са по-добри от мен.

Успех.

 

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