Cod sursa(job #1038196)

Utilizator miu_mik93FMI - Paduraru Miruna miu_mik93 Data 21 noiembrie 2013 10:25:02
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <cstring>
#include <fstream>
#include <queue>
#include<cstdlib>
using namespace std;
	
#define MAXN 101

#define INF 1<<30

int v[MAXN];

int expbysquaring(int x, int n)
{
	if ( n < 0 )
		return expbysquaring(1/x , -n);
     else if ( n == 0 )
		 return 1;
     else 
		 if ( n == 1 )
			 return x;
     else
		 if ( n % 2 == 0 ) 
			 return expbysquaring(x * x, n/2);
     else
		 if ( n % 2 > 0 )
			return x * expbysquaring(x * x, (n-1)/2);

}

int main()
{
	FILE *f = fopen("lgput.in", "r");
	FILE *g = fopen("lgput.out", "w");

	int A, N;
	fscanf(f, "%d %d", &A, &N); 
	fprintf(g, "%d", expbysquaring(A, N));

	fclose(f); fclose(g);
	return 0;
}