Cod sursa(job #1082414)

Utilizator mihai.cuculiciCuculici Mihail mihai.cuculici Data 14 ianuarie 2014 17:03:41
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
#include <iostream>
#include <math.h>
using namespace std;
 
ifstream f ("kfib.in");
ofstream g ("kfib.out");
int n,i,a;
 
#define NMAX 666013
#define PHI 1.618033988749895
#define phi 0.6180339887498949

long long myPow(long long a, long long b)
{
    long long p=1;
    while(b)
    {
        if(b%2==1){
            p=(p*a);
            b--;
        }
        a=(a*a);
        b/=2;
    }
    return p;
}

long long kfib(int k){
	return round((myPow(PHI, k) - myPow(-phi, k)) / 2.23606797749979);
}

int main()
{
    f>>n;
    for(i=0;i<n;i++) f>>a;
   	g<<kfib(a)<<"\n";
    f.close();
    g.close();
    return 0;
}