Project Euler Problem 30

来源:互联网 发布:小嶋阳菜毕业知乎 编辑:程序博客网 时间:2024/05/18 15:29

Project Euler problem 30.



Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits:

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.


result = 0### 2 digitsfor i in range (10, 100):    firstNum = (i % 10) * (i % 10) * (i % 10) * (i % 10) * (i % 10)    thirdNum = ((i - i % 10) / 10) * ((i - i % 10) / 10) * ((i - i % 10) / 10) * ((i - i % 10) / 10) * ((i - i % 10) / 10)    if firstNum + secondNum == i:        print i, "=", firstNum, "+", secondNum        result += i### 3 digitsfor i in range (100, 1000):    firstNum = (i % 10) * (i % 10) * (i % 10) * (i % 10) * (i % 10)    secondNum = ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10)    thirdNum = ((i - i % 100) / 100) * ((i - i % 100) / 100) * ((i - i % 100) / 100) * ((i - i % 100) / 100) * ((i - i % 100) / 100)    if firstNum + secondNum + thirdNum == i:        print i, "=", firstNum, "+", secondNum, "+", thirdNum        result += i### 4 digitsfor i in range (1000, 10000):    firstNum = (i % 10) * (i % 10) * (i % 10) * (i % 10) * (i % 10)    secondNum = ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10)    thirdNum = ((i % 1000 - i % 100) / 100) * ((i % 1000 - i % 100) / 100) * ((i % 1000 - i % 100) / 100) * ((i % 1000 - i % 100) / 100) * ((i % 1000 - i % 100) / 100)    fourthNum = ((i - i % 1000) / 1000) * ((i - i % 1000) / 1000) * ((i - i % 1000) / 1000) * ((i - i % 1000) / 1000) * ((i - i % 1000) / 1000)    if firstNum + secondNum + thirdNum + fourthNum == i:        print i, "=", firstNum, "+", secondNum, "+", thirdNum, "+", fourthNum        result += i### 5 digitsfor i in range (10000, 100000):    firstNum = (i % 10) * (i % 10) * (i % 10) * (i % 10) * (i % 10)    secondNum = ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10)    thirdNum = ((i % 1000 - i % 100) / 100) * ((i % 1000 - i % 100) / 100) * ((i % 1000 - i % 100) / 100) * ((i % 1000 - i % 100) / 100) * ((i % 1000 - i % 100) / 100)    fourthNum = ((i % 10000 - i % 1000) / 1000) * ((i % 10000 - i % 1000) / 1000) * ((i % 10000 - i % 1000) / 1000) * ((i % 10000 - i % 1000) / 1000) * ((i % 10000 - i % 1000) / 1000)    fifthNum = ((i - i % 10000) / 10000) * ((i - i % 10000) / 10000) * ((i - i % 10000) / 10000) * ((i - i % 10000) / 10000) * ((i - i % 10000) / 10000)    if firstNum + secondNum + thirdNum + fourthNum + fifthNum == i:        print i, "=", firstNum, "+", secondNum, "+", thirdNum, "+", fourthNum, "+", fifthNum        result += i### 6 digitsfor i in range (100000, 300000):    firstNum = (i % 10) * (i % 10) * (i % 10) * (i % 10) * (i % 10)    secondNum = ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10) * ((i % 100 - i % 10) / 10)    thirdNum = ((i % 1000 - i % 100) / 100) * ((i % 1000 - i % 100) / 100) * ((i % 1000 - i % 100) / 100) * ((i % 1000 - i % 100) / 100) * ((i % 1000 - i % 100) / 100)    fourthNum = ((i % 10000 - i % 1000) / 1000) * ((i % 10000 - i % 1000) / 1000) * ((i % 10000 - i % 1000) / 1000) * ((i % 10000 - i % 1000) / 1000) * ((i % 10000 - i % 1000) / 1000)    fifthNum = ((i % 100000 - i % 10000) / 10000) * ((i % 100000 - i % 10000) / 10000) * ((i % 100000 - i % 10000) / 10000) * ((i % 100000 - i % 10000) / 10000) * ((i % 100000 - i % 10000) / 10000)    sixthNum = ((i - i % 100000) / 100000) * ((i - i % 100000) / 100000) * ((i - i % 100000) / 100000) * ((i - i % 100000) / 100000) * ((i - i % 100000) / 100000)    if firstNum + secondNum + thirdNum + fourthNum + fifthNum + sixthNum == i:        print i, "=", firstNum, "+", secondNum, "+", thirdNum, "+", fourthNum, "+", fifthNum, "+", sixthNum        result += iprint result




solved using Python. the answer is 443839.
0 0
原创粉丝点击