






def 				lowerCamelCase__      (    __lowerCamelCase			:     str  ,		__lowerCamelCase			:     Optional[Any]  ,		__lowerCamelCase			:     List[str]  ,		__lowerCamelCase			:     List[str]  ,		__lowerCamelCase			:     Any  ,		__lowerCamelCase			:     Union[str, Any]		):
  if index == r:
    for j in range(__lowerCamelCase		):
      print(data[j]  ,		end=""" """		)
    print(""" """		)
    return
  #  When no more elements are there to put in data[]
  if i >= n:
    return
  # current is included, put next at next location
  __UpperCAmelCase							:	Any           =  arr[i]
  combination_util(__lowerCamelCase  ,		__lowerCamelCase  ,		__lowerCamelCase  ,		index + 1  ,		__lowerCamelCase  ,		i + 1		)
  # current is excluded, replace it with
  # next (Note that i+1 is passed, but
  # index is not changed)
  combination_util(__lowerCamelCase  ,		__lowerCamelCase  ,		__lowerCamelCase  ,		__lowerCamelCase  ,		__lowerCamelCase  ,		i + 1		)
  # The main function that prints all combinations
  # of size r in arr[] of size n. This function
  # mainly uses combinationUtil()






def 				lowerCamelCase__      (    __lowerCamelCase			:     Dict  ,		__lowerCamelCase			:     Optional[Any]  ,		__lowerCamelCase			:     str		):
  # A temporary array to store all combination one by one
  __UpperCAmelCase							:	List[str]           =  [0] * r
  # Print all combination using temporary array 'data[]'
  combination_util(__lowerCamelCase  ,		__lowerCamelCase  ,		__lowerCamelCase  ,		0  ,		__lowerCamelCase  ,		0		)


if __name__ == "__main__":
       # Driver code to check the function above
       a		:       Union[str, Any]			     = [10, 20, 30, 40, 50]
       print_combination(arr, len(arr), 3)
       # This code is contributed by Ambuj sahu










from math import log

from scipy.constants import Boltzmann, physical_constants

a		:       Any			     = 300  # TEMPERATURE (unit = K)






def 				lowerCamelCase__      (    __lowerCamelCase			:     float  ,		__lowerCamelCase			:     float  ,		__lowerCamelCase			:     float  ,		):

  if donor_conc <= 0:
    raise ValueError("""Donor concentration should be positive"""		)
  elif acceptor_conc <= 0:
    raise ValueError("""Acceptor concentration should be positive"""		)
  elif intrinsic_conc <= 0:
    raise ValueError("""Intrinsic concentration should be positive"""		)
  elif donor_conc <= intrinsic_conc:
    raise ValueError(
        """Donor concentration should be greater than intrinsic concentration"""		)
  elif acceptor_conc <= intrinsic_conc:
    raise ValueError(
        """Acceptor concentration should be greater than intrinsic concentration"""		)
  else:
    return (
        Boltzmann
        * T
        * log((donor_conc * acceptor_conc) / intrinsic_conc**2		)
        / physical_constants["electron volt"][0]
    )


if __name__ == "__main__":
       import doctest

       doctest.testmod()


