Cod sursa(job #2683313)

Utilizator mstevanStevan mstevan Data 10 decembrie 2020 21:33:40
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator java Status done
Runda Arhiva educationala Marime 1.19 kb
import java.io.*;
import java.util.Scanner;


public class Main {
    private static long n;
    private static long m;

    public static void main(String[] args) {
        File inputFile = new File("lgput.in");
        File outputFile = new File("lgput.out");

        try {
            FileInputStream inputStream = new FileInputStream(inputFile);
            Scanner scanner = new Scanner(inputStream);

            n = scanner.nextLong(); // the number
            m = scanner.nextLong(); // the power

            long modulo = 1999999973;
            long result = power(n, m, modulo);

            FileOutputStream outputStream = new FileOutputStream(outputFile);
            PrintWriter writer = new PrintWriter(outputStream);

            writer.println(result);
            writer.close();
            outputStream.close();
        } catch (IOException e) {

        }
    }

    public static long power(long n, long m, long modulo){
        if (m == 1)
            return n % modulo;
        if (m == 0)
            return 1;
        if (m % 2 == 1)
            return n * power(n * n % modulo, m / 2, modulo) % modulo;
        else
            return power(n * n % modulo, m / 2, modulo) % modulo;
    }
}