Cod sursa(job #3351190)

Utilizator robert.stefanRobert Stefan robert.stefan Data 17 aprilie 2026 14:09:49
Problema Al k-lea termen Fibonacci Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
// https://infoarena.ro/problema/kfib

#include<fstream>

using namespace std;

#define MODULO 666013

ifstream fin("kfib.in");
ofstream fout("kfib.out");

int main() {
	int k;

	// a = F(n-2), b = F(n-1), c = F(n)
	// voi memora doar ultimele doua valori ale sirului, pentru ca doar de ele am nevoie
	// astfel, reduc memoria utilizata 
	int a, b, c;

	fin >> k;

	if(k == 0) {
		// termenul 0 fibonacci
		fout << 0 << endl;
	} else if(k == 1) {
		// termenul 1 fibonacci
		fout << 1 << endl;
	} else {
		a = 0;
		b = 1;

		// calculez iterativ termenii fiboncacci pana la F(k)
		for(int i = 2; i <= k; i++) {
			// calculez termenul curent F(i) = F(i - 2) + F(i - 1)
			c = (a + b) % MODULO;

			// pregatesc pasul urmator:
			// F(i - 2) devine F(i - 1)
			// F(i - 1) devine F(i)
			// la pasul urmator voi calcula F(i + 1) = F(i - 1) + F(i)
			a = b;
			b = c;
		}

		fout << c << endl;
	}


	fin.close();
	fout.close();

	return 0;
}