Large numbers using C++ 2013/04/23 ck5t C++ 言語を用いて出来るだけ大きな数を表現する int main(); がで出来るだけ大きな値を返すようにする C++ は ISO/IEC 14882:2003 準拠とする ただし、"int" "float" "double" で表現できる値は十分大きいものとする 事実上無限ビットあると考えて良い あくまで「十分大きい」なので、ちゃんと負の数に対するビット演算なども使える でもintのサイズに依存した値になるコードはNG 環境依存の動作、環境依存の値を返すものはNG 上記ルールと ISO/IEC 14882:2003 とで mainの戻り値が1個の値に定まらないようなものはNG pre-processor 使用禁止 #define, #include などの禁止 コンパイラなどに指定するマクロも禁止 __FILE__ や __LINE__ などの組み込みマクロも使用禁止 ライブラリ関数や外部ファイル定義の関数や変数の使用禁止 pow, quit などの外部関数や変数の使用禁止 実行時間やメモリ使用量は問わない new で確保したメモリは解放しなくていい ------------------------------------------------------------------------------------ int main(){return 9;} // 21 int main(){return 99;} // 22 int main(){return 9E9;} // 23 int main(){return 9E99;} // 24 int main(){return 9E999;} // 25 int main(){return 9E9999;} // 26 int main(){return 9E99999;} // 27 int main(){return 9E999999;} // 28 int main(){return 9E9999999;} // 29 int main(){return 9<<(9<<99);} // 30 int main(){return 9<<(9<<999);} // 31 int main(){return 9<<(9<<9999);} // 32 int main(){return 9<<(9<<99999);} // 33 int main(){return 9<<(9<<999999);} // 34 int main(){return 9<<(9<<(9<<99));} // 35 int main(){return 9<<(9<<(9<<999));} // 36 int main(){return 9<<(9<<(9<<9999));} // 37 int main(){return 9<<(9<<(9<<99999));} // 38 int main(){return 9<<(9<<(9<<999999));} // 39 int main(){return 9<<(9<<(9<<(9<<99)));} // 40 int main(){return 9<<(9<<(9<<(9<<999)));} // 41 int A;int main(){return++A-9?9<C(D):E};return!G*A?E:new B(C);}B*F,*G;}C,*D=&C;int main(){for(;D=D->C(A);)++A;return A;} // 141 F[ε_0] int A;struct B{B*C(int D){B*E=99+D?C(D-1):F,C={E,G?G->C(D):E};return!G*A?E:new B(C);}B*F,*G;}C,*D=&C;int main(){for(;D=D->C(A);)++A;return A;} // 142 int A;struct B{B*C(int D){B*E=9E9+D?C(D-1):F,C={E,G?G->C(D):E};return!G*A?E:new B(C);}B*F,*G;}C,*D=&C;int main(){for(;D=D->C(A);)++A;return A;} // 143 int A;struct B{B*C(int D){B*E=9E99+D?C(D-1):F,C={E,G?G->C(D):E};return!G*A?E:new B(C);}B*F,*G;}C,*D=&C;int main(){for(;D=D->C(A);)++A;return A;} // 144 int A;struct B{B*C(int D){B*E=9E999+D?C(D-1):F,C={E,G?G->C(D):E};return!G*A?E:new B(C);}B*F,*G;}C,*D=&C;int main(){for(;D=D->C(A);)++A;return A;} // 145 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G-!F};return G?new A(B):D;}A*E,*F;int G;}B,*C=&B;int main(){for(;C=C->B(B.G+=9););return B.G;} // 146 F[φ(ω,0)] struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G-!F};return G?new A(B):D;}A*E,*F;int G;}B,*C=&B;int main(){for(;C=C->B(B.G+=99););return B.G;} // 147 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G-!F};return G?new A(B):D;}A*E,*F;int G;}B,*C=&B;int main(){for(;C=C->B(B.G+=9E9););return B.G;} // 148 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G-!F};return G?new A(B):D;}A*E,*F;int G;}B,*C=&B;int main(){for(;C=C->B(B.G+=9E99););return B.G;} // 149 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G-!F};return G?new A(B):D;}A*E,*F;int G;}B,*C=&B;int main(){for(;C=C->B(B.G+=9E999););return B.G;} // 150 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G-!F};return G?new A(B):D;}A*E,*F;int G;}B,*C=&B;int main(){for(;C=C->B(B.G+=9E9999););return B.G;} // 151 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G-!F};return G?new A(B):D;}A*E,*F;int G;}B,*C=&B;int main(){for(;C=C->B(B.G+=9E99999););return B.G;} // 152 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G-!F};return G?new A(B):D;}A*E,*F;int G;}B,*C=&B;int main(){for(;C=C->B(B.G+=9E999999););return B.G;} // 153 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G-!F};return G?new A(B):D;}A*E,*F;int G;}B,*C=&B;int main(){for(;C=C->B(B.G+=9E9999999););return B.G;} // 154 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G-!F};return G?new A(B):D;}A*E,*F;int G;}B,*C=&B;int main(){for(;C=C->B(B.G+=9<<(9<<99)););return B.G;} // 155 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G-!F};return G?new A(B):D;}A*E,*F;int G;}B,*C=&B;int main(){for(;C=C->B(B.G+=9<<(9<<999)););return B.G;} // 156 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?G-!F:C,H-!G};return H?new A(B):D;}A*E,*F;int G,H;}B,*C=&B;int main(){for(;C=C->B(B.H+=9););return B.H;} // 157 F[φ(ω^2,0)] struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?G-!F:C,H-!G};return H?new A(B):D;}A*E,*F;int G,H;}B,*C=&B;int main(){for(;C=C->B(B.H+=99););return B.H;} // 158 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?G-!F:C,H-!G};return H?new A(B):D;}A*E,*F;int G,H;}B,*C=&B;int main(){for(;C=C->B(B.H+=9E9););return B.H;} // 159 int A;struct B{B*C(int D){B*E=9+D?C(D-1):F,C={E,G?G->C(D):E,H?G?H:H->C(D):E};return!H*A?E:new B(C);}B*F,*G,*H;}C,*D=&C;int main(){for(;D=D->C(A);)++A;return A;} // 160 F[Γ_0] int A;struct B{B*C(int D){B*E=99+D?C(D-1):F,C={E,G?G->C(D):E,H?G?H:H->C(D):E};return!H*A?E:new B(C);}B*F,*G,*H;}C,*D=&C;int main(){for(;D=D->C(A);)++A;return A;} // 161 int A;struct B{B*C(int D){B*E=9E9+D?C(D-1):F,C={E,G?G->C(D):E,H?G?H:H->C(D):E};return!H*A?E:new B(C);}B*F,*G,*H;}C,*D=&C;int main(){for(;D=D->C(A);)++A;return A;} // 162 int A;struct B{B*C(int D){B*E=9E99+D?C(D-1):F,C={E,G?G->C(D):E,H?G?H:H->C(D):E};return!H*A?E:new B(C);}B*F,*G,*H;}C,*D=&C;int main(){for(;D=D->C(A);)++A;return A;} // 163 int A;struct B{B*C(int D){B*E=9E999+D?C(D-1):F,C={E,G?G->C(D):E,H?G?H:H->C(D):E};return!H*A?E:new B(C);}B*F,*G,*H;}C,*D=&C;int main(){for(;D=D->C(A);)++A;return A;} // 164 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H-!G};return H?new A(B):D;}A*E,*F,*G;int H;}B,*C=&B;int main(){for(;C=C->B(B.H+=9););return B.H;} // 165 F[φ(ω,0,0)] struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H-!G};return H?new A(B):D;}A*E,*F,*G;int H;}B,*C=&B;int main(){for(;C=C->B(B.H+=99););return B.H;} // 166 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H-!G};return H?new A(B):D;}A*E,*F,*G;int H;}B,*C=&B;int main(){for(;C=C->B(B.H+=9E9););return B.H;} // 167 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H-!G};return H?new A(B):D;}A*E,*F,*G;int H;}B,*C=&B;int main(){for(;C=C->B(B.H+=9E99););return B.H;} // 168 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H-!G};return H?new A(B):D;}A*E,*F,*G;int H;}B,*C=&B;int main(){for(;C=C->B(B.H+=9E999););return B.H;} // 169 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H-!G};return H?new A(B):D;}A*E,*F,*G;int H;}B,*C=&B;int main(){for(;C=C->B(B.H+=9E9999););return B.H;} // 170 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H-!G};return H?new A(B):D;}A*E,*F,*G;int H;}B,*C=&B;int main(){for(;C=C->B(B.H+=9E99999););return B.H;} // 171 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H-!G};return H?new A(B):D;}A*E,*F,*G;int H;}B,*C=&B;int main(){for(;C=C->B(B.H+=9E999999););return B.H;} // 172 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H-!G};return H?new A(B):D;}A*E,*F,*G;int H;}B,*C=&B;int main(){for(;C=C->B(B.H+=9E9999999););return B.H;} // 173 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H-!G};return H?new A(B):D;}A*E,*F,*G;int H;}B,*C=&B;int main(){for(;C=C->B(B.H+=9<<(9<<99)););return B.H;} // 174 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H-!G};return H?new A(B):D;}A*E,*F,*G;int H;}B,*C=&B;int main(){for(;C=C->B(B.H+=9<<(9<<999)););return B.H;} // 175 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H?H-!G:C,I-!H};return I?new A(B):D;}A*E,*F,*G;int H,I;}B,*C=&B;int main(){for(;C=C->B(B.I+=9););return B.I;} // 176 F[φ(ω^2,0,0)] struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H?H-!G:C,I-!H};return I?new A(B):D;}A*E,*F,*G;int H,I;}B,*C=&B;int main(){for(;C=C->B(B.I+=99););return B.I;} // 177 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H?H-!G:C,I-!H};return I?new A(B):D;}A*E,*F,*G;int H,I;}B,*C=&B;int main(){for(;C=C->B(B.I+=9E9););return B.I;} // 178 struct A{A*B(int C){A*D=C?B(C-1):E,B={D,F?F->B(C):D,G?F?G:G->B(C):D,H?H-!G:C,I-!H};return I?new A(B):D;}A*E,*F,*G;int H,I;}B,*C=&B;int main(){for(;C=C->B(B.I+=9E99););return B.I;} // 179 struct A{A*B(int C,A*D=0){A*E=C?B(C-1):F,B={G?G->B(C,2B(C.H+=9););return C.H;} // 180 F[Bachmann-Howard ordinal]