Problem 32
31についてはDPなり再帰なりなんなりで解けるけど,汚い解答だったので飛ばす.綺麗なのは見つけたけど…苦手みたいだなぁ.
def pan(a,b): t = str(a)+str(b)+str(a*b) if '0' in t: return 0 if len(t) == len(set(t)) == 9: return a*b return 0 print sum(set([pan(a,b) for a in xrange(50) for b in xrange(2000)]))
さくっと求めた.
print sum(set([a*b for a in xrange(50) for b in xrange(2000) if not( '0' in str(a) or '0' in str(b) or '0' in str(a*b)) and len(str(a)+str(b)+str(a*b)) == 9 == len(set(str(a)+str(b)+str(a*b)))]))
どうせなので関数無しで.
今日から忙しいのでまたしばらく放置になると思われ.