import algds.IOUtils;

public class aufgabe36 {

    public static long methode1 (int a, int n) {
	if (n==1) return a;
	if (n>1 && n%2!=0) return methode1(a,n/2)*methode1(a,n/2)*a;
	else return methode1(a,n/2)*methode1(a,n/2);  
    }
    public static long methode2 (int a, int n) {
	if (n==1) return a;
	if (n>1 && n%2 != 0) return methode2(a*a,n/2)*a;
	else return methode2(a*a,n/2);  
    }
    public static void main(String args[]) {
	System.out.print("Basis? ");
	int a = IOUtils.readInt();
        System.out.println(a);
	System.out.print("Exponent? ");
	int n = IOUtils.readInt();
        System.out.println(n);
	System.out.println("Methode 1: " + a + " hoch " + n + " = " + methode1(a,n));
	System.out.println("Methode 2: " + a + " hoch " + n + " = " + methode2(a,n));
    }
}