way to calculate 2**1000 without expanding it?
invalid at invalid.invalid
Sat Sep 17 04:19:12 CEST 2011
On 2011-09-16, Gary Herron <gherron at digipen.edu> wrote:
> On 09/16/2011 01:17 PM, Arnaud Delobelle wrote:
>> On 16 September 2011 21:06, Ian Kelly<ian.g.kelly at gmail.com> wrote:
>>> On Fri, Sep 16, 2011 at 1:21 PM, zombie<thatiparthysreenivas at gmail.com> wrote:
>>>> Hi guys,
>>>> i am writing a program to sum up the digits of a number 2**1000?
>>>> Is there a way/formula to do it without expanding it?
>>> Possibly, but why worry about it? It's only around 300 digits.
>>> Since this sounds like homework, I won't post the one-liner I used to
>>> do it the brute-force way, but I will note that it takes about 200
>>> microseconds to run on my laptop.
>> Ah go on, let's make a codegolf contest out of it.
>> My entry:
> Here's another one-liner using a generator instead of map:
> sum(int(c) for c in str(2**1000))
Just in case you can't spare the 3KB required for the list of integers
that map creates. :)
In this case it doesn't matter, but it's not hard to find problems
where the difference between the memory requirements for a generator
and a map/list-comprehension are significant enough to worry about.
More information about the Python-list