●ハイパーかけ算

情報


概要

巨大な数値のかけ算をする。

解説

引数

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親}」。

  ひっさん結果=ひっさん結果を文字列分解して配列逆順して空で配列結合。
  ひっさん結果で戻る。


名前:
コメント:


タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年05月31日 17:28
ツールボックス

下から選んでください:

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