code: 
  
  """simple docstring"""
  
  
  
  
  import numpy as np
  import qiskit
  def      __SCREAMING_SNAKE_CASE		(		lowercase__    ,							lowercase__   ):
  					"""simple docstring"""
  					A    =      qiskit.QuantumCircuit(num_qubits + 1   )
  
  					# First, let's deal with the case in which oracle is balanced
  					if case == "balanced":
  										# First generate a random number that tells us which CNOTs to
  										# wrap in X-gates:
  										A    =      np.random.randint(1    ,							2**num_qubits   )
  										# Next, format 'b' as a binary string of length 'n', padded with zeros:
  										A    =      format(lowercase__    ,							F"""0{num_qubits}b"""   )
  										# Next, we place the first X-gates. Each digit in our binary string
  										# corresponds to a qubit, if the digit is 0, we do nothing, if it's 1
  										# we apply an X-gate to that qubit:
  										for index, bit in enumerate(lowercase__   ):
  															if bit == "1":
  																				oracle_qc.x(lowercase__   )
          # Do the controlled-NOT gates for each qubit, using the output qubit
          # as the target:
  										for index in range(lowercase__   ):
  															oracle_qc.cx(lowercase__    ,							lowercase__   )
  										# Next, place the final X-gates
  										for index, bit in enumerate(lowercase__   ):
  															if bit == "1":
  																				oracle_qc.x(lowercase__   )
  
      # Case in which oracle is constant
  					if case == "constant":
  										# First decide what the fixed output of the oracle will be
  										# (either always 0 or always 1)
  										A    =      np.random.randint(2   )
  										if output == 1:
  															oracle_qc.x(lowercase__   )
  
  					A    =      oracle_qc.to_gate()
  					A    =      "Oracle"  # To show when we display the circuit
  					return oracle_gate
  def      __SCREAMING_SNAKE_CASE		(		lowercase__    ,							lowercase__   ):
  					"""simple docstring"""
  					A    =      qiskit.QuantumCircuit(num_qubits + 1    ,							lowercase__   )
  					# Set up the output qubit:
  					dj_circuit.x(lowercase__   )
  					dj_circuit.h(lowercase__   )
  					# And set up the input register:
  					for qubit in range(lowercase__   ):
  										dj_circuit.h(lowercase__   )
  					# Let's append the oracle gate to our circuit:
  					dj_circuit.append(lowercase__    ,							range(num_qubits + 1   )   )
  					# Finally, perform the H-gates again and measure:
  					for qubit in range(lowercase__   ):
  										dj_circuit.h(lowercase__   )
  
  					for i in range(lowercase__   ):
  										dj_circuit.measure(lowercase__    ,							lowercase__   )
  
  					return dj_circuit
  def      __SCREAMING_SNAKE_CASE		(		lowercase__    ,							lowercase__   ):
  					"""simple docstring"""
  					A    =      qiskit.Aer.get_backend("aer_simulator"   )
  
  					A    =      dj_oracle(lowercase__    ,							lowercase__   )
  					A    =      dj_algorithm(lowercase__    ,							lowercase__   )
  
  					# Execute the circuit on the simulator
  					A    =      qiskit.execute(lowercase__    ,							lowercase__    ,							shots=1_000   )
  
  					# Return the histogram data of the results of the experiment.
  					return job.result().get_counts(lowercase__   )
  
  
  if __name__ == "__main__":
  	print(f"""Deutsch Jozsa - Constant Oracle: {deutsch_jozsa('constant', 3)}""")
  	print(f"""Deutsch Jozsa - Balanced Oracle: {deutsch_jozsa('balanced', 3)}""")
  
  
  
  
  
  
style_context: 
  
  """simple docstring"""
  
  
  
  
  def      __SCREAMING_SNAKE_CASE		(		lowercase__    ,							lowercase__   ):
  					"""simple docstring"""
  					A    =      1
  					while b > 0:
  										if b & 1:
  															res *= a
  
  										a *= a
  										b >>= 1
  
  					return res
  def      __SCREAMING_SNAKE_CASE		(		lowercase__    ,							lowercase__    ,							lowercase__   ):
  					"""simple docstring"""
  					A    =      1
  					while b > 0:
  										if b & 1:
  															A    =      ((res % c) * (a % c)) % c
  
  										a *= a
  										b >>= 1
  
  					return res
  
  
  
  
  
  