Tribonacci Sequence More Exercise Methods
Здравейте, някой може ли да ми даде отговор защо получавам 2 грешки - 5ти и 6ти тест?
Грешките са за наперавилен тип данни: **
https://pastebin.com/QLavqGGN
Здравейте, някой може ли да ми даде отговор защо получавам 2 грешки - 5ти и 6ти тест?
Грешките са за наперавилен тип данни: **
https://pastebin.com/QLavqGGN
Програмата ще гърми с 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]} ");
}
}
Здравей и благодаря за отговора, след направената промяна отново дава 80 точки.
Вариант за сравнение на логиката:
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;
}
}
}
Благодаря, разбрах какъв е проблема :). Също така задачата се получи с uint, така че не е нужно да се използва BigInteger.
На мен идеята на MartinBG , че има вход по-малък от три ми свърши работа, благодаря.
Аз имах този проблем: грешка при изпълнение на 5 и 6 тест. Предполагах, че бъркам с обхвата на типовете и безуспешно се потих с BigInteger, но ето, че изобщо не бил там проблема. А за мое учудване минах и без BigInteger.
Сега като се замисля: май правя лош анализ на посочените от judge грешки. Май надхвърлянето на обхват на променливи води(разбира се) до грешни резултати, но не и до грешки при изпълнение.
Сега работи:
https://pastebin.com/N4djhRpc
Моля ви не се смейте на многото коментари в кода, идеята ми е да помогна на някои.
Нося и на критика с уговорката, колкото мога, толкова кодя. Повечето са по-добри от мен.
Успех.