Digit fifth powers
Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits:
Find the sum of all the numbers that can be written as the sum of fifth powers of their digits.
This problem might seem simple but the only problem one might face is where to end the execution of program? Where is the end, is it a finite number? Is it infinite?
1634 = 14 + 64 + 34 + 44
8208 = 84 + 24 + 04 + 84
9474 = 94 + 44 + 74 + 44
As 1 = 14 is not a sum it is not included.
The sum of these numbers is 1634 + 8208 + 9474 = 19316.Find the sum of all the numbers that can be written as the sum of fifth powers of their digits.
This problem might seem simple but the only problem one might face is where to end the execution of program? Where is the end, is it a finite number? Is it infinite?
The answer is that we will have to assume the value based on our experience in mathematics. We are considering the number to be with base as 10. So the maximum sum of the number will be k*95.The minimum number of digits at which the program might end will be 5. So the value of k will be taken by 5. Then the value of k*95 will be a 6 digit number.
So the conclusion is that our iteration is a finite number and its value is 5(10-1)5= 295245.
Program
If you want to understand the program, then you might have to see: List Comprehensions
We have left 1 in the program and started with 2 because it has been given in the question. The reason is 15 is not a sum of two or more numbers.
As always I have made the source code available for download from Github Gist pep30.py
Output
Summary
This problem didn't take a long time for me to solve. I am not satisfied with the execution time. I think there is a scope for improvement in the program. I have thought of using dynamic programming but the concept of dynamic programming might be inefficient because we will have to store each and every number. But I am satisfied with the size of the program. Without comments and removing all the timing stuff we would be left with only 5 lines of code. May be I can satisfy myself with this aspect😋.
As always if you have any doubt or didn't understand anything then comment in the comment box below and I will be glad to help you.
Please feel free to comment if you have found any typo or have found any mistake or have a different program or have a better solution or have a suggestion. I will be glad to view each and every one of them.
You can also contact me.
Thank you. Have a nice day😃!