Cod sursa(job #1672756)

Utilizator slycerdan dragomir slycer Data 3 aprilie 2016 01:03:03
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator java Status done
Runda Arhiva educationala Marime 1.17 kb
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

class Main{

    public static long MOD = 1999999973;

    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
        Scanner scanner = new Scanner(new FileInputStream("lgput.in"));
        long base = scanner.nextLong();
        long exponent = scanner.nextLong();
        long modulo = 1999999973;//scanner.nextLong();
        long result = 1;
        while (exponent > 0) {
            if (exponent % 2 == 1) {
                result = (result * base) % modulo;
            }
            base = (base * base) % modulo;
            exponent = exponent / 2;
        }
        PrintWriter writer = new PrintWriter("lgput.out", "UTF-8");
        writer.println(result);
        writer.close();
    }


    static long solve( long a, long p ){
        if ( p == 0 ){
            return 1;
        }
        if ( p == 1 ){
            return a;
        }
        if ( p%2==0 ){
            long aux = solve( a, p/2 );
            return ( aux * aux ) % MOD;
        } else {
            return ( a * solve( a, p-1 ) ) % MOD ;
        }
    }

}