●ハイパーかけ算

「●ハイパーかけ算」の編集履歴(バックアップ)一覧に戻る

●ハイパーかけ算 - (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()

----
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。