我要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
答案 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])