





'''simple docstring'''





import math

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





def    __UpperCamelCase      (    a = 3) ->qiskit.result.counts.Counts:



					if isinstance(a,     a):
										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(a) != 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(a,     "qr")
					lowerCamelCase__       =       ClassicalRegister(a,     "cr")

					lowerCamelCase__       =       QuantumCircuit(a,     a)

					lowerCamelCase__       =       number_of_qubits

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

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

					# measure all the qubits
					quantum_circuit.measure(a,     a)
					# simulate with 10000 shots
					lowerCamelCase__       =       Aer.get_backend("qasm_simulator")
					lowerCamelCase__       =       execute(a,     a,     shots=10000)

					return job.result().get_counts(a)


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








def    __UpperCamelCase      (    a = 100) ->int:
					lowerCamelCase__       =       (n * (n + 1) // 2) ** 2
					lowerCamelCase__       =       n * (n + 1) * (2 * n + 1) // 6
					return sum_cubes - sum_squares


if __name__ == "__main__":
						print(f"""{solution() = }""")

