Loading...

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

milen8204 avatar milen8204 296 Точки

[Exam Problems] C# Basics - Simple Loops - проблем със задачата

Здравейте, може ли някой да ми подскаже защо имам 90 точки, за това решение за примерната задача за изпита Simple Loops.

Тоест някъде гърми! и защо не мога да си обясня има някаква уловка която е невидима за моите скромни способности.

Тагове:
0
Programming Basics
HPetrov avatar HPetrov 822 Точки

Гърми или дава грешен резултат? Най-вероятно е 2рото и сигурно защото типа от данни ти превърта. Ползвай BigInteger за целта.

P.S. Линка към решението ти ме праща към uploading ;)

0
milen8204 avatar milen8204 296 Точки

BigInteger съм ползвал :), http://pastebin.com/edit.php?i=kzpdpHJm

0
alexxdim94 avatar alexxdim94 33 Точки

Линкът ти не е наред нещо!

Edit: Както колегата под мен каза, не връщаш нищо ако ти се подаде 1, 2 или 3. Аз го направих с if-ове.

1
HPetrov avatar HPetrov 822 Точки

Аха ясно. Не си хванал случаите когато може да ти подаде да търси 1-3тия елемент. Когато ти иска 4-ти и нагоре всичко е окай ама като ти поиска примерно първия елемент от поредицата ти нищо не му връщаш.

2
a.polyanska avatar a.polyanska 107 Точки

Да се включа, макар и със закъснение, но при мен проблемът е същият , само че аз съм задала в случаите когато  n < 3 следното:

if (n < 4)
        {
            if (n == 1)
            {
                Tn = 0;
            }
            else if (n == 2)
            {
                Tn = T1;
            }
            else
            {
                Tn = T1 + T2;
            }

В условието не е зададено какъв отговор да връща при тези случаи, така че съм писала най-логичното за мен (което не е задължително най-логичното по принцип :) ).

Та питането ми е дали затова на теста връща един грешен отговор (иначе си работи, използвала съм BigInteger и не се препълва).

0
boyanov avatar boyanov 65 Точки

Без целия ти код няма как да съм сигурен , но мисля че ако n е 3 ти вместо да принтираш третото число което са ти дали, събира6 1вото и 2рото и принтира6 това. Например ако инпута е 1 1 1 3, трябва да принтираш 1, а ти принтираш 2. Пробвай това, и ако пак не ти дава 100 ще трябва да си изтеглиш тестовете с които Judge ти проверява програмата.

1
a.polyanska avatar a.polyanska 107 Точки

Ето го целия код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//Problem 2 – Tribonacci
//The Tribonacci sequence is a sequence in which every next element is made by
//the sum of the previous three elements from the sequence.
 
//Write a computer program that finds the Nth element of the Tribonacci sequence,
//if you are given the first three elements of the sequence and the number N.
//Mathematically said: with given T1, T2 and T3 – you must find Tn.
//Input
//•    The input data should be read from the console.
//•    The values of the first three Tribonacci elements will be given on the first
//three input lines.
//•    The number N will be on the fourth line. This is the number of the consecutive
//element of the sequence that must be found by your program.
//•    The input data will always be valid and in the format described. There is no
// need to check it explicitly.


class SimpleLoops
{
    static void Main(string[] args)
    {
        System.Numerics.BigInteger T1 = int.Parse(Console.ReadLine());
        System.Numerics.BigInteger T2 = int.Parse(Console.ReadLine());
        System.Numerics.BigInteger T3 = int.Parse(Console.ReadLine());
        System.Numerics.BigInteger n = int.Parse(Console.ReadLine());


         System.Numerics.BigInteger Tn = T3 + T2 + T1;

        if (n < 4)
        {
            if (n == 1)
            {
                Tn = 0;
            }
            else if (n == 2)
            {
                Tn = T1;
            }
            else
            {
                Tn = T1 + T2;
            }
        }
        else
            for (int i = 4; i < n; i++)
            {
                    T1 = T2;
                    T2 = T3;
                    T3 = Tn;
                    Tn = T3 + T2 + T1;
            }
            Console.WriteLine(Tn);
       
    }
}

Жълтото показва Тn при n = 3, т.е. май е така, както го казваш, но все пак дава грешка. От къде да изтегля въпросните тестове?

0
MinchoDzhagalov avatar MinchoDzhagalov 33 Точки

Тъй като за разлика от оригиналната Фибоначи редица, тук могат да ти подадат произволни числа за първите три елемента, третият елемент не е задължително равен на сбора на първите два (както е в редицата на Фибоначи). Ако например са ти въведени 3, 5 и 2 и от теб се иска третия елемент, твоята програма ще върне 8, което в случая е грешен резултат. Просто за n == 1 принтирай първия елемент, за n == 2 принтирай втория елемент, за n == 3 принтирай третия елемент, а за n > 3 прави изчисленията с цикъла. Ето го твоето решение за 100 точки. Успех! :)

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