265536を計算することを考える。
次々と2乗していけばいいのだが、
プログラムとしては2倍するほうがずっと簡単。
時間はかかるが、1を65536回2倍する。
function twice(x) {
var length = x.length;
var y = 0; // 繰り上がり
for(var i = 0; i < length; i++) {
var a = x[i];
a += a + y;
if(a >= 1000000000) {
a -= 1000000000;
y = 1;
}
else {
y = 0;
}
x[i] = a;
}
if(y == 1) {
x[length] = 1; // 最後繰り上がり
}
}
多倍長整数を配列で考え、9桁を1つの要素に割り当てる。
そして、下から要素ごとに自分を足していき、
繰り上がったら上の要素に1を加える。
結果、19729桁で、上と下を10桁表示すると、
2003529930 ... 5719156736
となった。
念のため対数で概算すると(以下、底は10)、
log265536 = 65536log2 = 19728.3017958347
100.3017958347 = 2.003529930