# Python Challenge - Level 0

## Problem Hint: try to change the URL address.

## Explore

As the "0" indicates, this is just a warm up.

### Loop

The naive way to solve it: multiply by 2 in a loop:

``````>>> k = 1
>>> for i in range(38):
...     k *= 2
...
>>> k
274877906944
``````

### Power

Use `**` for power:

``````>>> 2**38
274877906944
``````

In REPL the result will be printed; or you can explicitly print the result by calling `print()`

``````>>> print(2**38)
274877906944
``````

Instead of `**`, you can also use `pow()`

``````>>> pow(2,38)
274877906944
``````

or

``````>>> print(pow(2,38))
274877906944
``````

### Shift

Multiply by 2 is equivalent to shifting the binary representation left by one:

``````>>> 1<<38
274877906944
``````

### Numeric Types

Done!

Wait, why 38? what is implied?

If you are coming from C/C++, Java or other languages, you know that there are multiple types just for integers: `short`, `integer`, `long`, and even `BigInteger` beyond 64-bit. However that is not the case in Python:

``````>>> type(2**3)
<class 'int'>
>>> type(2**38)
<class 'int'>
>>> type(2**380)
<class 'int'>
``````

So 38 is a good(and random) example to show a `int` larger than 32-bit.

Similar for float type, in Python it can be arbitrarily large, no `double` needed

``````>>> type(2**3.8)
<class 'float'>
>>> type(2.0**38)
<class 'float'>
``````

## Complete Solution

``````print(2**38)
``````

Output:

``````274877906944
``````

## Next Level

http://www.pythonchallenge.com/pc/def/274877906944.html