

import qiskit
from qiskit.providers import Backend


def 						__SCREAMING_SNAKE_CASE      (SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__ ):
						snake_case_,					snake_case_     =			bin(SCREAMING_SNAKE_CASE__ )[2:], bin(SCREAMING_SNAKE_CASE__ )[2:]  # Remove leading '0b'

						# Ensure that both strings are of the same length
						if len(SCREAMING_SNAKE_CASE__ ) > len(SCREAMING_SNAKE_CASE__ ):
												snake_case_     =			y.zfill(len(SCREAMING_SNAKE_CASE__ ) )
						else:
												snake_case_     =			x.zfill(len(SCREAMING_SNAKE_CASE__ ) )

						# We need (3 * number of bits in the larger number)+1 qBits
						# The second parameter is the number of classical registers, to measure the result
						snake_case_     =			qiskit.QuantumCircuit((len(SCREAMING_SNAKE_CASE__ ) * 3) + 1						,	len(SCREAMING_SNAKE_CASE__ ) + 1 )

						# We are essentially "not-ing" the bits that are 1
						# Reversed because it's easier to perform ops on more significant bits
						for i in range(len(SCREAMING_SNAKE_CASE__ ) ):
												if x[::-1][i] == "1":
																		circuit.x(SCREAMING_SNAKE_CASE__ )
						for j in range(len(SCREAMING_SNAKE_CASE__ ) ):
												if y[::-1][j] == "1":
																		circuit.x(len(SCREAMING_SNAKE_CASE__ ) + j )

						return circuit, x, y


def 						__SCREAMING_SNAKE_CASE      (SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__						,	):
						circuit.ccx(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__ )
						circuit.cx(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__ )
						circuit.ccx(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__ )
						circuit.cx(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__ )
						circuit.cx(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__ )


def 						__SCREAMING_SNAKE_CASE      (SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__ = qiskit.Aer.get_backend('''aer_simulator''' )						,	):

						if vala < 0 or vala < 0:
												raise ValueError('''Both Integers must be positive!''' )

						# Store the Integers
						snake_case_,					snake_case_,					snake_case_     =			store_two_classics(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__ )
						for i in range(len(SCREAMING_SNAKE_CASE__ ) ):
												full_adder(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__						,	len(SCREAMING_SNAKE_CASE__ ) + i						,	len(SCREAMING_SNAKE_CASE__ ) + len(SCREAMING_SNAKE_CASE__ ) + i						,	len(SCREAMING_SNAKE_CASE__ ) + len(SCREAMING_SNAKE_CASE__ ) + i + 1 )
												circuit.barrier()  # Optional, just for aesthetics

						# Measure the resultant qBits
						for i in range(len(SCREAMING_SNAKE_CASE__ ) + 1 ):
												circuit.measure([(len(SCREAMING_SNAKE_CASE__ ) * 2) + i]						,	[i] )

						snake_case_     =			qiskit.execute(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__						,	shots=1 ).result()

						# The result is in binary. Convert it back to int
						return int(list(res.get_counts() )[0]						,	2 )


if __name__ == "__main__":
					import doctest

					doctest.testmod()


lowerCAmelCase_ 			=			(1, 1_53, 3_70, 3_71, 16_34, 24_67_80_51, 1_15_13_22_19_01_87_63_99_25_65_09_55_97_97_39_71_52_24_01)
lowerCAmelCase_ 			=			(-1_53, -1, 0, 1.2, 2_00, "A", [], {}, None)


def 						__SCREAMING_SNAKE_CASE      (SCREAMING_SNAKE_CASE__ ):
						if not isinstance(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__ ) or n < 1:
												return False

						# Initialization of sum and number of digits.
						snake_case_     =			0
						snake_case_     =			0
						snake_case_     =			n
						# Calculation of digits of the number
						while temp > 0:
												number_of_digits += 1
												temp //= 10
						# Dividing number into separate digits and find Armstrong number
						snake_case_     =			n
						while temp > 0:
												snake_case_     =			temp % 10
												total += rem**number_of_digits
												temp //= 10
						return n == total


def 						__SCREAMING_SNAKE_CASE      (SCREAMING_SNAKE_CASE__ ):
						if not isinstance(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__ ) or n < 1:
												return False

						# Init a "histogram" of the digits
						snake_case_     =			[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
						snake_case_     =			0
						snake_case_     =			0
						snake_case_     =			n
						while temp > 0:
												snake_case_,					snake_case_     =			divmod(SCREAMING_SNAKE_CASE__						,	10 )
												digit_histogram[rem] += 1
												digit_total += 1

						for cnt, i in zip(SCREAMING_SNAKE_CASE__						,	range(len(SCREAMING_SNAKE_CASE__ ) ) ):
												total += cnt * i**digit_total

						return n == total


def 						__SCREAMING_SNAKE_CASE      (SCREAMING_SNAKE_CASE__ ):
						if not isinstance(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__ ) or n < 1:
												return False
						snake_case_     =			len(str(SCREAMING_SNAKE_CASE__ ) )  # the power that all digits will be raised to
						# check if sum of each digit multiplied expo times is equal to number
						return n == sum(int(SCREAMING_SNAKE_CASE__ ) ** expo for i in str(SCREAMING_SNAKE_CASE__ ) )


def 						__SCREAMING_SNAKE_CASE      ():
						snake_case_     =			int(input('''Enter an integer to see if it is an Armstrong number: ''' ).strip() )
						print(F'''{num} is {'' if armstrong_number(SCREAMING_SNAKE_CASE__ ) else 'not '}an Armstrong number.''' )
						print(F'''{num} is {'' if narcissistic_number(SCREAMING_SNAKE_CASE__ ) else 'not '}an Armstrong number.''' )
						print(F'''{num} is {'' if pluperfect_number(SCREAMING_SNAKE_CASE__ ) else 'not '}an Armstrong number.''' )


if __name__ == "__main__":
					import doctest

					doctest.testmod()
					main()