Cod sursa(job #970537)

Utilizator miu_mik93FMI - Paduraru Miruna miu_mik93 Data 7 iulie 2013 09:52:16
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
#define NMax 100000
const int m = 1999999973;
int Functionexpbysquaring(long long int x,long long int n)
{
	if (n < 0) return Functionexpbysquaring(1/x,-n);
	else if (n == 0)  return 1;
    else if (n == 1) return x % m;
    else if (n % 2 == 0) return Functionexpbysquaring(((x%m)*(x%m)) % m, n/2);
    else if (n % 2 != 0) return x * Functionexpbysquaring(((x%m)*(x%m)) % m, (n-1)/2);
}

int main()
{
    long long int i, n, p;
    long long int sol;
    FILE *f = fopen("admitere.txt", "r");
	FILE *g = fopen("bla.txt", "w");
	fscanf(f, "%lld %lld", &n, &p);
	sol =  Functionexpbysquaring(n%m, p);
	fprintf(g, "%lld", sol%m);
	fclose(g);
    return 0;
}