Cod sursa(job #1676515)

Utilizator deeagrtAndGrt deeagrt Data 5 aprilie 2016 22:55:39
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator java Status done
Runda Arhiva educationala Marime 0.99 kb

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
public static void main(String[] args) throws IOException {
	Scanner a = new Scanner(new FileReader("lgput.in"));
	int nr = a.nextInt();
	int power = a.nextInt();
	BigInteger sol = new Main().pow(nr,power);
	PrintWriter o = new PrintWriter(new FileWriter("lgput.out"));
	BigInteger p = sol.mod(new BigInteger("1999999973"));
	o.println(p);
	a.close();
	o.close();
}

 BigInteger pow(int nr, int power) {
	 if (power == 0)
		 return new BigInteger("1");
	 if (power == 1)
		 return new BigInteger(Integer.toString(nr));
	if (power%2 == 0){
		BigInteger x = pow(nr,power/2);
		return x.multiply(x).mod(new BigInteger("1999999973"));
	}
	else{
		BigInteger x = pow(nr,(power-1)/2);
		return new BigInteger(Integer.toString(nr)).multiply(x).multiply(x).mod(new BigInteger("1999999973"));}
}
}