Принцип такой: последняя цифра - это остаток числа при делении на 10, поэтому можно не получать сами числа, а брать остатки при делении на 10:
2 ^ 1 = 2
2 ^ 2 = 4
2 ^ 3 = 8
2 ^ 4 = 16, пишем 6
2 ^ 5 = 2 ^ 4 * 2 = 6 * 2 = 12, пишем 2
2 ^ 6 = 2 ^ 5 * 2 = 2 * 2 = 4
2 ^ 7 = 2 ^ 6 * 2 = 4 * 2 = 8
и тд
т.е. последние цифры меняются по циклу (2 4 8 6). Поэтому 2 ^ 2016 будет иметь такой же остаток как и 2 ^(2016 - 4) = 2 ^ 2012 (так как цикл длины 4) и 2 ^ (2012 - 4) = 2 ^ 2008 и тд. остаток 2016 при делении на 4 такой же, как и у 4, поэтому и последняя цифра будет как у 2 ^ 4, то естьт 6.
аналогично 7 ^ 2017:
7 ^ 1 = 7
7 ^ 2 = 49 => 9
7 ^ 3 = 7 ^ 2 * 7 = 9 * 7 = 63 => 3
7 ^ 4 = 7 ^ 3 * 7 = 3 * 7 = 21 => 1
7 ^ 5 = 7 ^ 4 * 7 = 1 * 7 = 7
7 уже получали, значит, цикл найден - (7, 9, 3, 1)
2017 имеет остаток 1 при делении на 4, поэтому имеет такую же последнюю цифру как и 7 ^ 1 = 7
осталось перемножить последние цифры: 6 * 7 = 42 =>
последняя цифра 2