1914 - Rica

De la Universitas MediaWiki

Cerința

Rică a învățat la școală despre șiruri recurente și a primit ca temă să lucreze cu un anumit șir. Rică știe că primele elemente din acest șir sunt următoarele: 1,1,2,4,7,13,24,44,81,149,274,504. Tema lui Rică este să găsească termenul de pe locul X. Rică nu știa să zică… regula şirului nostru, de aceea el vă cere ajutorul.

Deduceți regula de formare a șirului și scrieți un program care să afișeze pentru un X dat, elementul din șir de pe poziția X.

Date de intrare

Fișierul de intrare ricain.txt conține pe prima linie valoarea lui X.

Date de ieșire

Fișierul de ieșire ricaout.txt va conține pe prima linie valoarea elementului din şirul dat de pe poziţia X.

Restricții și precizări

  • 1 ⩽ n ⩽ 10.000

Exemplu 1

ricain.txt
6
ricaout.txt
13

Exemplu 2

ricain.txt
12
ricaout.txt
504

Exemplu 3

ricain.txt
0
ricaout.txt
Nu au fost respectate cerintele.

Rezolvare

#1914 - Rica
def construieste_sir(X):
    sir = [1, 1, 2]

    for i in range(3, X):
        sir.append(sir[i - 1] + sir[i - 2] + sir[i - 3])

    return sir


def main(input_file, output_file):
    try:
        with open(input_file, 'r') as file:
            X = int(file.readline().strip())
            if 1 <= X <= 10000:
                sir = construieste_sir(X)
                with open(output_file, 'w') as output:
                    output.write(str(sir[X - 1]) + '\n')
            else:
                print("Nu au fost respectate cerintele impuse.")
    except Exception as e:
        print(f"Nu au fost respectate cerințele impuse: {str(e)}")


if __name__ == "__main__":
    main("ricain.txt", "ricaout.txt")