*情報 作者名:五十六 引用元:[[なでしこプログラム掲示板「ハイパーかけ算」>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() ----