Cod sursa(job #865249)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 26 ianuarie 2013 11:58:01
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;

#define rad5 0.447213595
#define nr1 1.618033989
#define nr2 -0.618033989

double putere(double a, int b){

    double result = 1.0;
    double modulo = 666013.0;

    while(b){

        if(b&1)
            result *= a,
            result = result - floor(result / modulo) * modulo;

        b >>=1 ;
        a *= a;
        a = a - floor(a / modulo) * modulo;
    }

    return result;
}


int main(){

    freopen("kfib.in", "r", stdin);
    freopen("kfib.out", "w", stdout);

    int n;

    scanf("%d", &n);
    printf("%d\n", rad5*putere(nr1,n)-rad5*putere(nr2,n));

    return 0;
}