Retour aux défis
Moyen 0 résolus 0 % de réussite

Digit Power Sum

Add each digit raised to its position from the left.

Ce que vous allez apprendre

  • Split a number into its digits from left to right
  • Raise each digit to a power that depends on its position
  • Accumulate a total inside a loop

Problème

Afficher la traduction

Number the digits of n from the left, starting at 1. Raise each digit to the power of its position and add the results. For 352 that is 3¹ + 5² + 2³. A zero digit adds 0.

Implement digit_power_sum(n).

Input

n: A positive integer.

Output

Return the sum of the powered digits.

Contraintes

1 ≤ n ≤ 1,000,000,000

Exemples

Exemple 1
Entrée :
n = 352

Sortie attendue :
expected = 36
Entrée :
long long n = 352;

Sortie attendue :
long long expected = 36;
Entrée :
long n = 352;

Sortie attendue :
long expected = 36;

Explication

3¹ + 5² + 2³ = 3 + 25 + 8 = 36.

Exemple 2
Entrée :
n = 89

Sortie attendue :
expected = 89
Entrée :
long long n = 89;

Sortie attendue :
long long expected = 89;
Entrée :
long n = 89;

Sortie attendue :
long expected = 89;

Explication

8¹ + 9² = 8 + 81 = 89, the number itself.

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

Scan the number digit by digit from left to right and keep track of each digit’s position.

Indice 2

Convert the number to a string or otherwise know the left-to-right index before combining each digit with its position.

Indice 3

Remember that a zero digit contributes nothing, but its position still matters for the exponent count.

Complexité attendue

O(d) time, O(1) extra space

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.