■■C++で大きな数を作るスレ■■
■ このスレッドは過去ログ倉庫に格納されています
02591
2009/05/04(月) 11:41:45とてもやり尽くせないと思うけど。
とりあえず >>252 の loop, loop2, loop3 を一般化したloop_n 相当を作ってみました。
最適化して解読しにくいと思うので多少説明。
{b,c,d} は関数bにloop_cを(d+1)回行ったもの
{0,0,0} は特別扱いで f(x) = x+9
変数 d は無くても作れるけど、ループより再帰の方が短かったので足しました。
関数は1文字で右から計算を行う operator = で作るのが一番短かったので
みにくいけど = で実装
// 138文字
struct a{
a*b;
int c,d;
int operator=(int f){
a g={b,c-!d,d?d-1:f},h={&g,c};
return c+d?*b=(c*d?h:g)=f:f+9;
}
}b,c={&b,9};
int main(){return c=9;}
■ このスレッドは過去ログ倉庫に格納されています