


'''simple docstring'''


from math import pow






def  __lowerCAmelCase (__lowerCAmelCase      , __lowerCAmelCase      , __lowerCAmelCase      , __lowerCAmelCase      , __lowerCAmelCase      , ):
		if current_sum == needed_sum:
				# If the sum of the powers is equal to needed_sum, then we have a solution.
				solutions_count += 1
				return current_sum, solutions_count

		_UpperCAmelCase		:       Union[str, Any]								=      int(pow(__lowerCAmelCase      , __lowerCAmelCase   )   )
		if current_sum + i_to_n <= needed_sum:
				# If the sum of the powers is less than needed_sum, then continue adding powers.
				current_sum += i_to_n
				_UpperCAmelCase					,    _UpperCAmelCase		:       List[str]								=      backtrack(
				    __lowerCAmelCase      , __lowerCAmelCase      , current_number + 1      , __lowerCAmelCase      , __lowerCAmelCase   )
				current_sum -= i_to_n
		if i_to_n < needed_sum:
				# If the power of i is less than needed_sum, then try with the next power.
				_UpperCAmelCase					,    _UpperCAmelCase		:       Optional[Any]								=      backtrack(
				    __lowerCAmelCase      , __lowerCAmelCase      , current_number + 1      , __lowerCAmelCase      , __lowerCAmelCase   )
		return current_sum, solutions_count






def  __lowerCAmelCase (__lowerCAmelCase      , __lowerCAmelCase   ):
		if not (1 <= needed_sum <= 1_000 and 2 <= power <= 10):
				raise ValueError(
				    "Invalid input\n"
				    "needed_sum must be between 1 and 1000, power between 2 and 10."   )

		return backtrack(__lowerCAmelCase      , __lowerCAmelCase      , 1      , 0      , 0   )[1]  # Return the solutions_count


if __name__ == "__main__":
						import doctest

						doctest.testmod()









'''simple docstring'''


# tests directory-specific settings - this file is run automatically
# by pytest before any tests are run

import sys
import warnings
from os.path import abspath, dirname, join


# allow having multiple repository checkouts and not needing to remember to rerun
# 'pip install -e .[dev]' when switching between checkouts and running tests.
lowerCamelCase__    	=     abspath(join(dirname(dirname(dirname(__file__))), 'src'))
sys.path.insert(1, git_repo_path)


# silence FutureWarning warnings in tests since often we can't act on them until
# they become normal warnings - i.e. the tests still need to test the current functionality
warnings.simplefilter(action='ignore', category=FutureWarning)






def  __lowerCAmelCase (__lowerCAmelCase   ):
		from transformers.testing_utils import pytest_addoption_shared

		pytest_addoption_shared(__lowerCAmelCase   )






def  __lowerCAmelCase (__lowerCAmelCase   ):
		from transformers.testing_utils import pytest_terminal_summary_main

		_UpperCAmelCase		:       Optional[int]								=      terminalreporter.config.getoption("--make-reports"   )
		if make_reports:
				pytest_terminal_summary_main(__lowerCAmelCase      , id=__lowerCAmelCase   )



