




UpperCAmelCase_						=[sum(int(c, 10) ** 2 for c in i.__str__()) for i in range(10_0000)]



def       UpperCAmelCase       (     _snake_case							):
							lowerCAmelCase   =		0
							while number:
														# Increased Speed Slightly by checking every 5 digits together.
														sum_of_digits_squared += DIGITS_SQUARED[number % 100000]
														number //= 100000

							return sum_of_digits_squared


# There are 2 Chains made,
# One ends with 89 with the chain member 58 being the one which when declared first,
# there will be the least number of iterations for all the members to be checked.

# The other one ends with 1 and has only one element 1.

# So 58 and 1 are chosen to be declared at the starting.

# Changed dictionary to an array to quicken the solution
UpperCAmelCase_						=[None] * 1000_0000
UpperCAmelCase_						=True
UpperCAmelCase_						=False



def       UpperCAmelCase       (     _snake_case							):

							if CHAINS[number - 1] is not None:
														return CHAINS[number - 1]  # type: ignore

							lowerCAmelCase   =		chain(next_number(_snake_case							)							)
							lowerCAmelCase   =		number_chain

							while number < 10000000:
														lowerCAmelCase   =		number_chain
														number *= 10

							return number_chain



def       UpperCAmelCase       (     _snake_case = 10000000							):
							for i in range(1						, _snake_case							):
														if CHAINS[i] is None:
																					chain(i + 1							)

							return CHAINS[:number].count(_snake_case							)


if __name__ == "__main__":
					import doctest

					doctest.testmod()
					print(F'''{solution() = }''')









import math

import numpy as np
import qiskit
from qiskit import Aer, ClassicalRegister, QuantumCircuit, QuantumRegister, execute



def       UpperCAmelCase       (     _snake_case = 3							):
							if isinstance(_snake_case						, _snake_case							):
														raise TypeError('''number of qubits must be a integer.'''							)
							if number_of_qubits <= 0:
														raise ValueError('''number of qubits must be > 0.'''							)
							if math.floor(_snake_case							) != number_of_qubits:
														raise ValueError('''number of qubits must be exact integer.'''							)
							if number_of_qubits > 10:
														raise ValueError('''number of qubits too large to simulate(>10).'''							)

							lowerCAmelCase   =		QuantumRegister(_snake_case						, '''qr'''							)
							lowerCAmelCase   =		ClassicalRegister(_snake_case						, '''cr'''							)

							lowerCAmelCase   =		QuantumCircuit(_snake_case						, _snake_case							)

							lowerCAmelCase   =		number_of_qubits

							for i in range(_snake_case							):
														quantum_circuit.h(number_of_qubits - i - 1							)
														counter -= 1
														for j in range(_snake_case							):
																					quantum_circuit.cp(np.pi / 2 ** (counter - j)						, _snake_case						, _snake_case							)

							for k in range(number_of_qubits // 2							):
														quantum_circuit.swap(_snake_case						, number_of_qubits - k - 1							)

							# measure all the qubits
							quantum_circuit.measure(_snake_case						, _snake_case							)
							# simulate with 10000 shots
							lowerCAmelCase   =		Aer.get_backend('''qasm_simulator'''							)
							lowerCAmelCase   =		execute(_snake_case						, _snake_case						, shots=10000							)

							return job.result().get_counts(_snake_case							)


if __name__ == "__main__":
		print(
		    F'''Total count for quantum fourier transform state is: \
    {quantum_fourier_transform(3)}'''
		)



