human
Find remainder when a number A raised to N factorial is divided by P | Function to calculate ( A ^ N ! ) % P in O ( log y ).
Initialize result.
Update x if it is more than or Equal to p.
In case x is divisible by p.
If y is odd , multiply x with result.
y must be even now.
Returning modular power.
Function to calculate resultant remainder.
Initializing ans to store final remainder.
Calculating remainder.
Returning resultant remainder.
Given input.
Function Call"
How can the above be solved in Python?
 Give me a code to find remainder when a number A raised to N factorial is divided by P and the other steps required?
assistant
#Here is code to find remainder when a number A raised to N factorial is divided by P and the other steps required.
 def power ( x , y , p ) :
	res = 1
	x = x % p
	if ( x == 0 ) :
		return 0
	while ( y > 0 ) :
		if ( y & 1 ) :
			res = ( res * x ) % p
		y = y >> 1
		x = ( x * x ) % p
	return res
def remainder ( n , a , p ) :
	ans = a % p
	for i in range ( 1 , n + 1 ) :
		ans = power ( ans , i , p )
	return ans
A = 2
N = 1
P = 2
print ( remainder ( N , A , P ) )