


'''simple docstring'''

from math import pow





def __snake_case					(      UpperCAmelCase_						:						List[Any]					,				UpperCAmelCase_						:						Tuple					,				UpperCAmelCase_						:						Dict					,				UpperCAmelCase_						:						Tuple					,				UpperCAmelCase_						:						Dict					,				):





 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

 lowerCamelCase_      =  int(pow(UpperCAmelCase_					,				UpperCAmelCase_		)		)
 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
  lowerCamelCase_      =  backtrack(
      UpperCAmelCase_					,				UpperCAmelCase_					,				current_number + 1					,				UpperCAmelCase_					,				UpperCAmelCase_		)
  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.
  lowerCamelCase_      =  backtrack(
      UpperCAmelCase_					,				UpperCAmelCase_					,				current_number + 1					,				UpperCAmelCase_					,				UpperCAmelCase_		)
 return current_sum, solutions_count





def __snake_case					(      UpperCAmelCase_						:						List[Any]					,				UpperCAmelCase_						:						List[Any]		):





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

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


if __name__ == "__main__":
     import doctest

     doctest.testmod()








'''simple docstring'''





# coding=utf-8
# Copyright 2020 The HuggingFace Inc. team.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# this script dumps information about the environment

import os
import sys

import transformers


_lowerCAmelCase      						=	'''3'''

print('''Python version:''', sys.version)
print('''transformers version:''', transformers.__version__)

try:
 import torch

 print('''Torch version:''', torch.__version__)
 print('''Cuda available:''', torch.cuda.is_available())
 print('''Cuda version:''', torch.version.cuda)
 print('''CuDNN version:''', torch.backends.cudnn.version())
 print('''Number of GPUs available:''', torch.cuda.device_count())
 print('''NCCL version:''', torch.cuda.nccl.version())
except ImportError:
 print('''Torch version:''', None)

try:
 import deepspeed

 print('''DeepSpeed version:''', deepspeed.__version__)
except ImportError:
 print('''DeepSpeed version:''', None)

try:
 import tensorflow as tf

 print('''TensorFlow version:''', tf.__version__)
 print('''TF GPUs available:''', bool(tf.config.list_physical_devices('''GPU''')))
 print('''Number of TF GPUs available:''', len(tf.config.list_physical_devices('''GPU''')))
except ImportError:
 print('''TensorFlow version:''', None)


