Я не вижу чего-то неправильного в вашем коде с точки зрения эффективности, это просто излишне сложно.
Вот то, что я бы назвал прямым решением:
n = int(input())
for _ in range(n):
a, b = map(int, input().split())
print(pow(a, b, 10**9 + 7))
Это было принято с PyPy3, но не с CPython3. А с PyPy3 это все равно заняло 0,93 секунды.
Я бы сказал, что их временной предел не подходит для Python. Но попробуйте свой с PyPy3, если вы еще этого не сделали.
В случае, если кому-то интересно, тратит ли map
время впустую, за 0,92 секунды было принято следующее:
n = int(input())
for _ in range(n):
a, b = input().split()
print(pow(int(a), int(b), 10**9 + 7))