¿Cómo encuentras el último dígito de x ^ y?

Caso 1: x es un número impar que no termina en 5-
* para cada número impar x, x ^ y produce el último dígito como 1 si y% 4 == 0 es decir, para cada y que es un múltiplo de 4. Ahora, encontraremos el resto cuando y se divide por 4 es decir y% 4 = z (digamos) y multiplique el último dígito (1) (al aumentar la potencia, que es un múltiplo de 4) con x ^ z => último dígito (x ^ y) = último dígito (1 * (x ^ z)) = último dígito (x ^ (y% 4)).

Caso 2: x es un número impar y termina en 5 –
* por cada número x, x ^ y produce el último dígito como 5
=> último dígito (x ^ y) = 5.

Caso 3: x es un número par que no termina en 0 –
* por cada número par x, x ^ y produce el último dígito como 6 si y% 4 == 0 es decir, por cada y que es un múltiplo de 4. Ahora, encontraremos el resto cuando y se divide por 4 es decir y% 4 = z (digamos) y multiplique el último dígito (6) (al aumentar el poder de un múltiplo de 4) con x ^ z => último dígito (x ^ y) = último dígito (6 * (x ^ z)) = último dígito (6 * (x ^ (y% 4))).

Caso 4: x es un número par que termina en 0 –
Su último dígito será cero independientemente de la potencia.

Si desea encontrarlo manualmente, puede utilizar el concepto de ciclicidad.

Los siguientes son los números y sus respectivas ciclicidades.
Números Ciclicidad
0, 1,5,6 1
2,3,7,8 4
4,9 2

Pasos
1. Encuentre la ciclicidad del dígito unitario de base (es decir, el dígito unitario de X)
2. Divida la potencia (es decir, Y) por el valor encontrado en el paso 1. Obtendrá algo de resto
3. Ahora, el dígito unitario de la base elevado al valor restante encontrado en el paso 2 sería el dígito unitario de la expresión completa

Caso 1 : 12 ^ 59
Paso 1: Ciclicidad del dígito unitario de 12
es decir, ciclicidad de 2 = 4

paso 2: 59 dividido entre 4 resultados en resto = 3

Paso 3: Ahora, 2 ^ 3 = 8

Excepción para números que tienen ciclicidad 1
Caso 2: 246 ^ 56
Paso 1: Ciclicidad del dígito unitario de 246
es decir, ciclicidad de 6 = 1

paso 2: 56 dividido entre 1 resulta en resto = 0

Paso 3: Ahora, 6 ^ 0 = 1
Aquí, si escribe un dígito unitario como 1, la respuesta será incorrecta
Cyclicity 1 significa que después de 1 iteración, obtienes el mismo dígito en lugar de la unidad.
Entonces, ans será 6.

Por lo tanto, si el dígito unitario de (X) tiene un valor de ciclicidad 1, entonces la respuesta para (X ^ Y) siempre será el dígito unitario de X.

Una observación simple si multiplica el mismo número consigo mismo, por ejemplo
8 = 8 -> 8
8 ^ 2 = 64 -> 4
8 ^ 3 = 512 -> 2
8 ^ 4 = 4096 -> 6
8 ^ 5 = 32768-> 8
-> 4

notarás que este patrón se repite 8,4,2,6,8,4,2,6,8,4,2,6 ……. si sabe en qué período se repite este patrón (que es 4 aquí [8,4,2,6]) puede calcular para qué sirve el dígito en el lugar de las unidades, por ejemplo. cuál es el último dígito de 8 ^ 15 dividir encuentra el resto de 15/4 que es 3 y su respuesta es el tercer dígito en la secuencia recurrente que es 2 aquí.
solo necesita preocuparse por el último dígito de x.
Una implementación simple de Python podría ser

  x = int (input ())
 y = int (input ())
 x = x% 10
 p = [1,1,4,4,2,1,1,4,4,2]
 y = y% (p [x])
 si (y == 0):
     y = p [x]
 x = (x ** y)% 10
 imprimir (x)

Cía

  #include 
 #include 
 int main (nulo) {

     largo largo int x, y, arr [] = {1,1,4,4,2,1,1,4,4,2};
     scanf ("% d% d", & x, & y);
     x = x% 10;
     y = y% (arr [x]);
     si (y == 0)
         y = arr [x];
     x = ((int) pow (x, y))% 10;
     printf ("% d \ n", x);
    
 } 

Mediante el uso de la función mod de potencia rápida, ajuste n = 10

// b ^ p mod n
pow_mod (int b, int p, int n)
{
int resultado = 1;
mientras que (p> 0)
{
si (p% 2)
{resultado = (resultado * b)% n}
p / = 2
b = (b * b)% n
}
resultado devuelto
}

Puede echar un vistazo al segundo punto de la respuesta aquí que da la respuesta para cualquier ‘x’ e ‘y’ generales:
La respuesta de Divanshu Garg a ¿Cuál es el dígito unitario de 3 ^ 460?

o citando aquí:

La segunda forma más general es calcular [math] a ^ b \ pmod {10} [/ math] que funcionaría para cualquier [math] a [/ math] y [math] b [/ math].

Explota el hecho de que [math] a ^ b \ pmod {m} [/ math] puede reescribirse como [math] (a \ pmod {m}) ^ {b \ pmod {\ phi (m)}} [/ math], donde [math] \ phi (m) [/ math] es la función totient de Euler de [math] m [/ math].

  #include 
 vacío principal()
 {
 int x, y, r;
 cout << "x =";
 cin >> x;
 cout << "y =";
 cin >> y;

 r = x;

 para (int i = 1; i 

salida:
x = 2
y = 5
el último dígito es 2

servirá a su necesidad.

Sé que esta es una vieja pregunta, pero la verdadera solución de Python es:

pow(x, y, 10)