Cod sursa(job #2277895)

Utilizator Raoul_16Raoul Bocancea Raoul_16 Data 6 noiembrie 2018 23:20:28
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator java Status done
Runda Arhiva educationala Marime 0.89 kb
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;

public class Main {

	public static final String IN_FILE = "lgput.in";
	public static final String OUT_FILE = "lgput.out";
	public static final int MOD = 1999999973;
	
	public static long pow(final int N, final int P) {
		long Xcopy = N, sol = 1;
		for (int i = 0; (1 << i) <= P; ++i) {
			if ( ((1 << i) & P) > 0)
				sol = (sol * Xcopy) % MOD;
			Xcopy = (Xcopy * Xcopy) % MOD;
		}
		return sol;
	}	
	public static void main(final String[] args) throws IOException {
	    try (
	        final Scanner scanner = new Scanner(new FileInputStream(IN_FILE));
	        final PrintStream writer = new PrintStream(OUT_FILE)
	    ) 
	    
	    {
	      final int n = scanner.nextInt();
	      final int p = scanner.nextInt();
	      final long result = pow(n, p);
	      writer.println(result);
	    }
	 }
}