「●ハイパーかけ算」の編集履歴(バックアップ)一覧はこちら
「●ハイパーかけ算」(2009/05/31 (日) 17:28:08) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*情報
作者名:五十六
引用元:[[なでしこプログラム掲示板「ハイパーかけ算」>http://www.himanavi.net/cgi/nade-bbs/cbbs.cgi?mode=al2&namber=906&rev=&no=0]]
*概要
巨大な数値のかけ算をする。
*解説
***引数
A:数値
B:数値
***返り値
A×Bの計算結果
*サンプルプログラム
#普通に3^50を計算すると・・・?
#例1
結果=1。
50回、結果=結果×3。
結果を言う。//7.17897987691853E23
#例2
3^50を言う。//7.17897987691853E23
#しかしハイパーかけ算ならば!
結果=「1」。
50回、結果=結果と「3」でハイパーかけ算。
結果を言う。//717897987691852588770249
*//本体
●ハイパーかけ算({文字列=?}AとBで)
元数値A=A。元数値B=B。
数値A=元数値Aを文字列分解して配列逆順。数値B=元数値Bを文字列分解して配列逆順。
ひっさん表列=空。
//かけあわせ
数値Bで反復
B回数=回数。ポケB=対象。ポケAB親=0。
数値Aで反復
A回数=回数。ポケA=対象。ポケAB=ポケA×ポケB+ポケAB親。
ポケAB子=ポケABから1バイト右部分。ポケABから1バイト右端削除。
ポケAB親=ポケAB。もし、ポケAB親=空ならば、ポケAB親=0。
ひっさん表列[(B回数-1),((A回数-1)+(B回数-1))]=ポケAB子。
もし、ポケAB親≠0ならば
ひっさん表列[(B回数-1),((A回数-1+1)+(B回数-1))]=ポケAB親。
//最大でも、9*9=81 なので一桁分でおっけーね!
//縦に足し算
ひっさん結果=空。ポケAB親=0。//←くりあげ要員
(ひっさん表列の表列数)回
ポケAB=ひっさん表列の(回数-1)を表列合計。ポケAB=ポケAB+ポケAB親。
ポケAB子=ポケABから1バイト右部分。ポケABから1バイト右端削除。
ポケAB親=ポケAB。もし、ポケAB親=空ならば、ポケAB親=0。
ひっさん結果=「{ひっさん結果}{ポケAB子}」。
もし、ポケAB親≠0ならば
ポケAB親=ポケAB親を文字列分解して配列逆順して空で配列結合。//左右逆
ひっさん結果=「{ひっさん結果}{ポケAB親}」。
ひっさん結果=ひっさん結果を文字列分解して配列逆順して空で配列結合。
ひっさん結果で戻る。
----
#comment()
----
*情報
作者名:五十六
引用元:[[なでしこプログラム掲示板「ハイパーかけ算」>http://www.himanavi.net/cgi/nade-bbs/cbbs.cgi?mode=al2&namber=906&rev=&no=0]]
*概要
巨大な数値のかけ算をする。
*解説
***引数
A:数値
B:数値
***返り値
A×Bの計算結果
*サンプルプログラム
#普通に3^50を計算すると・・・?
#例1
結果=1。
50回、結果=結果×3。
結果を言う。//7.17897987691853E23
#例2
3^50を言う。//7.17897987691853E23
#しかしハイパーかけ算ならば!
結果=「1」。
50回、結果=結果と「3」でハイパーかけ算。
結果を言う。//717897987691852588770249
*//本体
●ハイパーかけ算({文字列=?}AとBで)
元数値A=A。元数値B=B。
数値A=元数値Aを文字列分解して配列逆順。数値B=元数値Bを文字列分解して配列逆順。
ひっさん表列=空。
//かけあわせ
数値Bで反復
B回数=回数。ポケB=対象。ポケAB親=0。
数値Aで反復
A回数=回数。ポケA=対象。ポケAB=ポケA×ポケB+ポケAB親。
ポケAB子=ポケABから1バイト右部分。ポケABから1バイト右端削除。
ポケAB親=ポケAB。もし、ポケAB親=空ならば、ポケAB親=0。
ひっさん表列[(B回数-1),((A回数-1)+(B回数-1))]=ポケAB子。
もし、ポケAB親≠0ならば
ひっさん表列[(B回数-1),((A回数-1+1)+(B回数-1))]=ポケAB親。
//最大でも、9*9=81 なので一桁分でおっけーね!
//縦に足し算
ひっさん結果=空。ポケAB親=0。//←くりあげ要員
(ひっさん表列の表列数)回
ポケAB=ひっさん表列の(回数-1)を表列合計。ポケAB=ポケAB+ポケAB親。
ポケAB子=ポケABから1バイト右部分。ポケABから1バイト右端削除。
ポケAB親=ポケAB。もし、ポケAB親=空ならば、ポケAB親=0。
ひっさん結果=「{ひっさん結果}{ポケAB子}」。
もし、ポケAB親≠0ならば
ポケAB親=ポケAB親を文字列分解して配列逆順して空で配列結合。//左右逆
ひっさん結果=「{ひっさん結果}{ポケAB親}」。
ひっさん結果=ひっさん結果を文字列分解して配列逆順して空で配列結合。
ひっさん結果で戻る。
----
#comment()
----