16^6 = 2^24 is a good first step that lead to numerous ways to number-crunch this: (a) start with 1 and double 24 times (b) most programmers know the math facts that 2^8 = 256 and 2^16 = 65536, so could jump directly to 65536 x 256 (c) could use intermediate results of 2^(8x3) = 256x256x256, or 2^(12x2) = 4096x4096. You'd get to 256 or 4096 pretty readily with method (a) (d) 2^5 = 2x2x2x2x2 = 32, 2^10 = 32x32 = 1024, 2^20 = 1024x1024 = (using FOIL no less) 1048576, 2^24 = 2^20 x 2^4 = 1048576 x 16 As cute as the trick of breaking down 1024x1024 with FOIL is, it's not much of a shortcut. I'd probably go the 4096x4096 route.