项目欧拉问题36

时间:2011-06-23 17:20:23

标签: python

我要question 36,我觉得这很简单。像往常一样,我显然是错的。我正在尝试用Python做这个(因为我不懂Python)。我的代码如下。我得到19作为输出,这显然是不正确的。我不明白我错过了什么。任何建议(不纠正代码)将不胜感激。我不想要正确的答案或代码(甚至是我错误的确切位置) - 只是提示让我朝着正确的方向前进。

 def isPolynomial(number):
    if(str(number) == str(number)[::-1]):
        return True
    else:
        return False
def isBinaryPolynomial(number):
    binNum = bin(number)
    binStr = str(binNum)[2:]
    revbinStr = binStr[::-1]
    if(binStr == revbinStr):
        return True
    else:
        return False
count = 0
for i in range(1, 1000001):
    if isPolynomial(i):
        if isBinaryPolynomial(i):
            count += 1
print count

4 个答案:

答案 0 :(得分:6)

看起来您的代码是正确的,但您需要仔细阅读它要求您提交的答案。如果不放弃它,我就不能再具体了!

答案 1 :(得分:1)

来自http://projecteuler.net/index.php?section=problems&id=36

找到所有数字的总和,少于一百万,这是基数10和基数2的回文。

答案 2 :(得分:1)

问题是要求数字的总和,而不是计数。这对你得到的答案没有什么影响,但这个词是“回文”,而不是“多项式”

答案 3 :(得分:-1)


# -*- coding: utf-8 -*-
"""
@author: neo
"""
def bin(x):
    result = ''
    x = int(x)
    while x > 0:
        mod = x % 2
        x /= 2
        result = str(mod) + result
    return result
print sum(i for i in xrange(1,1000001)\
    if str(i)==str(i)[::-1] and str(bin(i))==str(bin(i))[::-1])