Cod sursa(job #2894658)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 28 aprilie 2022 00:48:46
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
//
// Purposefully built to learn C++ template metaprogramming
// Inspired by
// https://en.wikipedia.org/wiki/Template_metaprogramming#Static_Table_Generation
//
#include <array>
#include <cstdlib>
#include <fstream>
#include <iostream>

using namespace std;

constexpr int mod = 666013;
constexpr int MAX_SIZE = 131071;

constexpr array<int, 2 *mod + 2> fibonacci = [] {
  array<int, 2 *mod + 2> result = {};
  int previous = 0;
  int current = 1;
  int next = 1;
  for (int i = 0; i < MAX_SIZE; i++) {
    result[i] = current;
    next = (previous + current) % mod;
    previous = current;
    current = next;
  }
  return result;
}();

int main() {
  ifstream f("kfib.in");
  ofstream g("kfib.out");
  int n;
  f >> n;
  cout << (n - 1) % (2 * mod + 2);
  g << fibonacci[(n - 1) % (2 * mod + 2)];
  return 0;
}