■■C++で大きな数を作るスレ■■
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/03/24(火) 20:27:50以下のプロトタイプの関数の戻り値で出来るだけ大きな数を返すものを作りましょう。
int main();
●ルール
最大でも1スレに収まる範囲とし、
1スレで完結したプログラムとしてください。
文字数も書いてください
●言語仕様
言語は C++ 2003 準拠とします
int と float は十分な精度があるとします
メモリは十分にあるとします
実行時間は問わないこととします
機種依存、コンパイラ依存の値が返るプログラムは不可
プリプロセッサ、ライブラリの使用は不可
●文字数カウントルール
動作上不要なコメント、スペース、タブ、改行は文字数に含めない
言語上必要なスペース、タブ、改行はカウントする(改行は1文字とする)
0511デフォルトの名無しさん
2010/11/11(木) 21:00:52とてつもなく大きい予感が。
----
NULLは未定義なので0で
void max(T *t){
void max(int *t){
はぞれぞれ
void max(T *&t){
void max(int *&t){
こうですかね?
0512デフォルトの名無しさん
2010/11/11(木) 21:30:50すごく似てるのがなんかもったいない気がする。
配列の各要素を1ずつ増やして、
終端が0, 各要素の最低値を1にすると、
テンプレートの初期関数を簡単に出来そう。
以下でたぶん返る値は同じ。
void max(int &t){
t = a+1;
}
bool next(int &t){
return --t||(max(t),0);
}
int dup(int t){
return t;
}
0513デフォルトの名無しさん
2010/11/11(木) 21:48:00bool next(int *t){while(!*t)*t++=a;if(*t==-1)return 0;--*t;return 1;}
>max(t)
max(t);
0514デフォルトの名無しさん
2010/11/11(木) 22:21:55>>507 に解説願いたい。
0515507
2010/11/14(日) 19:02:290516デフォルトの名無しさん
2010/11/15(月) 00:59:03おそらく2重リストアッカーマンくらい。
0518デフォルトの名無しさん
2010/11/16(火) 21:29:00f( c, b, a ) ≒ Ak( [2, c], [1, b], [0, a] )
f( d, c, b, a ) ≒ Ak( [3, d], [2, c], [1, b], [0, a] )
f( e, d, c, b, a ) ≒ Ak( [4, e], [3, d], [2, c], [1, b], [0, a] )
f( [d, c], [b, a] )
≒ Ak( [1, 1, d], [1, 0, c], [0, 1, b], [0, 0, a] )
f( [i, h, g], [f, e, d], [c, b, a] )
≒ Ak( [2, 2, i], [2, 1, h], [2, 0, g], [1, 2, f], [1, 1, e], [1, 0, d], [0, 2, c], [0, 1, b], [0, 0, a] )
f( [[h, g], [f, e]], [[d, c], [b, a]] )
≒ Ak( [1, 1, 1, h], [1, 1, 0, g], [1, 0, 1, f], [1, 0, 0, e], [0, 1, 1, d], [0, 1, 0, c], [0, 0, 1, b], [0, 0, 0, a] )
f( [[[b, 0], [0, 0]], [[0, 0], [0, 0]]], [[[0, 0], [0, 0]], [[0, 0], [0, a]]] )
≒ Ak( [1, 1, 1, 1, b], [0, 0, 0, 0, a] )
....
0519デフォルトの名無しさん
2010/12/06(月) 05:29:400520デフォルトの名無しさん
2010/12/16(木) 22:08:46だれかやってみて!
0521デフォルトの名無しさん
2010/12/17(金) 02:06:030522デフォルトの名無しさん
2010/12/17(金) 02:26:240523デフォルトの名無しさん
2010/12/17(金) 20:30:42手始めにschemeで>>9
84バイト
■ このスレッドは過去ログ倉庫に格納されています