Project Euler 问题 36

4 投票
4 回答
839 浏览
提问于 2025-04-16 20:10

我现在在做第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 个回答

1

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

找出所有小于一百万的数字,这些数字在十进制和二进制下都是回文数,然后把它们加起来。

1

这个问题是要你算数字的总和,而不是数量。而且这对你得到的答案没有影响,不过要注意,正确的词是“回文”,而不是“多项式”。

6

看起来你的代码是对的,但你需要仔细看看它让你提交的答案是什么。我不能说得更具体,不然就把答案给泄露了!

撰写回答