Submission #8079580


Source Code Expand

>+
[
  [-]>>
  #region Multi_ReadNum
  +>+>+>+>+> +>+> //桁数
  >+[-<
    ,+[-----------[----------------------
      [--------------<-[+<-]>[[-<+>]>]+<]
    ]]>
  ]
  <<-[+<-]+>[->]<
  #endregion
  
  #region Multi_IsTrue
  // note 非ゼロ判定します
  //start  ___{ a*}___
  //resilt ___{ a*}_x_
  //x : 0 if 0  1 if not 0
  [-[+[>]>]+<] <[[<]<]>>[>]<
  #endregion
  
  >>
]
<+>+>+>+>+>
<[<]<<<[<]<<<

#region 掛け算を行います

#region Notice
//メモリ: ___{a}___{b}___{積(初期済)}___
//初期位置は、aの末尾、終了位置は 積の末尾
//桁には余裕を持ってください。(上位2or3桁ぐらいの秋が必要)
#endregion

#region 正味の掛け算部分
[<]>[[-<<+>>]>]<<<
[
  -[
    ->>+
    [>]>>>[>]<
    
    #region 加算
    [<]>
    [ -[+[>] <<->>]<<+>>>  ]<<[>]<
    [
      ->>+[>]>[>]<[->+<]>[<]<[<]<[<]<
      [->>+[>]>[>]>+<<[<]<[<]<]<
    ]
    <<[[->>+<<]<]>>>[>]
    >>[[-<<+>>]>]
    >[>]>
    [ 
      [-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[ 
        <<+>>[-<+>]<----------> 
      ]]]]]]]]]]]>
    ]
    <<[<]
    
    #endregion    
  
    <<<[<]<<<[<]<
    
  ]
  >>+
  [>]>>>[>]>>>[>]<
  [->>+<<]
  <[<]<<<[<]<<<[<]<<
]
>>>[>]>>>[>]>>>[>]
>>[[-<<+>>]>]<<<
#endregion
#region 積の正規化
[  // 下位に2Byte上位に1byteの0メモリが必要です
  [->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[ 
    <+>[->+<]>----------< 
  ]]]]]]]]]]]<
]
>>[[-<+>]>]<<
#endregion
#endregion
>+>+>+>+>+>+>+>+>
>>>+>+>+>+>+>+>+>+>+>
<[<]<<<[<]<<<[<]<<<[<]<<<
#region Multi_AddToNext 3
//start  ___{ a*}___{ b*}___
//resilt ___{ a*}___{res}___
//notice b の桁が a 以上である必要があります
[
  -
  [->>+[>]> {[>]>>>[>]>>>[>]>>>} [>]<+[<] {<<<[<]<<<[<]<<<[<]} <[<]< ]
  >>+[>]> {[>]>>>[>]>>>[>]>>>} [>]<
  [->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[ 
    [->+<]>----------< <[+>]>[<]
  ]]]]]]]]]]]
  <[<] {<<<[<]<<<[<]<<<[<]} <[<]<<
]
>>>[[-<<+>>]>]> {[>]>>>[>]>>>[>]>>>} [>]<
[
  [->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[ 
    [->+<]>----------< <[+>]>[<]
  ]]]]]]]]]]]
  <
]
>>[[-<+>]>]<<[<] {<<<[<]<<<[<]<<<[<]} <<<
#endregion
> >>>[>]>>>[>]>>>[>]>>>[>]<

@

#region 除算を行います。

#region Notice
//メモリ: ___{被除数}___{除数}___{商(メモリクリア状態)}___
//初期位置は、除数の末尾、終了位置は商の末尾。
//桁には余裕を持ってください。(上位2or3桁ぐらいの秋が必要)
#endregion

#region 都合により除数を被除数に加算
[
  [<] {} <<[<]<[->+<]
  >[>]>> {} [>]>+<<
  -[ [<] {} <<[<]>+[>] {} >>[>]>+<<- ]<
]
>>>[[-<<+>>]>]<<<[<]>
<<< {} 
[ 
  [->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[ 
    <+>[->+<]>----------< 
  ]]]]]]]]]]]<
]
>>[[-<<+>>]>]> {} [>]<
#endregion

#region 真の桁数を取得
[<]<<<
[<]>[-[+ [>] ]<<+>>>]<<<->>
>>>[>]<
[<]>[-[+<-> [>] ]+>]<-<
#endregion
[<]<[<]<<<

#region 被除数の擬似最上位を1にする。
[<]<++<->>>[>]<
#endregion

#region 被除数をデクリメント
#endregion

>>>>[>]>[>]<

#region 開始桁を設定
[
  [->+<]<<[<]<[<]<<<[<]
  >[-<+>]>[>]>>>[>]>[>]<
]
#endregion

#region 被除数の非計算桁を移動
<[<]<<<
[[->>+<<]<]
>>>[>]>[>]
#endregion

<[<]<[<]<<<[<]>

-[
  [>]>>>[>]>[>]>>[>]>>>>[>]+[<]<<<<[<]<<[<]<[<]<<<[<]>
  
  #region 桁ループ
  [+
    [>]>>>[>]>[>]>>[>]<
    >>>>>[>]<+[<]<<<<
    
    #region メインの引き算
    [
      [<] {<<[<]<[<]} <<[<]<[->+<]
      >+++++++++[>]>> {[>]>[>]>> } [>]>+<<
      -[ [<] {<<[<]<[<]} <<[<]>-[>]>> {[>]>[>]>>} [>]>+<<- ]<
    ]
    >>>[[-<<+>>]>]<<<[<]
    <<[<]<[<]
    <<[<]<-[->+<]<>>[>]>
    >
    <<< {} +
    [ 
      [->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[ 
        <+>[->+<]>----------< 
      ]]]]]]]]]]]<
    ]
    >
    >[[-<<+>>]>]
    #endregion
    
    <<<[<]>
    -
  ]+
  #endregion
  
  [>]>>>[>]>[>]>>[>]<
  
  #region 引きすぎるので足し算
  [
    [<] {<<[<]<[<]} <<[<]<[->+<]
    >[>]>> {[>]>[>]>> } [>]>+<<
    -[ [<] {<<[<]<[<]} <<[<]>+[>]>> {[>]>[>]>>} [>]>+<<- ]<
  ]
  >>>[[-<<+>>]>]<<<[<]
  <<[<]<[<]
  <<[<]<[[->+<]<]>>[>]>
  >
  <<< {} 
  [ 
    [->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[ 
      <+>[->+<]>----------< 
    ]]]]]]]]]]]<
  ]
  >>[[-<<+>>]>]> {} [>]<
  #endregion
  
  #region 次の桁計算のための処理
  [<]<<<[<]+>-->[>]>>>
  [
    [-<<<+>>>]<<<[<]>[>]>>
  ]
  #endregion
  <<<[<]>
]

#region 被除数の後始末
<<[[->+<]<]<[[->>+<<]<]>>>[>]
#endregion

>>>[>]>>[>]<

#region 除数の後始末
[<]<+>>[[-<+>]>]<
#endregion

>>

#region 商の後始末
>>>[-[-<<<<+>>>>]>]
<<<<<[<]>
+>
+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>// 桁数記述
<[<]>-[>-]<
[
  
  [->>[>]>+<<[<]<]
  >+[>]<-<[<]<
]
>>[-]>[>]+>>[[-<+>]>]<<

[-[>[+++++++++>]>]+<]>-<<//被除数に除数をあらかじめ足しているのでその分を減算
#endregion


#endregion
[->>>+<<<]<
[->>>+<<<]<
[->>>+<<<]<
[->>>+<<<]<
[->>>+<<<]<
[->>>+<<<]<
[->>>+<<<]<
[->>>+<<<]<

#region Multi_WriteNum
+[<]>[-[+[>]]<+>>] ++++++[-<-------->]<+<--> [[<]>[+>]<]<[<]>[.>]
>++++++[-<++++++++>]<- [[<]>[->]<]<[<]<[[->+<]<]>>[>]< //数値復帰部
#endregion
>++++++++++[->+++++<]>----.+
[->>[>]<[+<]<]>>[.>]
++++++++++.

Submission Info

Submission Time
Task A - SDカード
User Uniden
Language Brainfuck (bf 20041219)
Score 100
Code Size 5462 Byte
Status AC
Exec Time 1 ms
Memory 384 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 2
AC × 10
Set Name Test Cases
Sample 00_example_01.txt, 00_example_02.txt
All 00_example_01.txt, 00_example_02.txt, 10_rand_01.txt, 10_rand_02.txt, 10_rand_03.txt, 10_rand_04.txt, 10_rand_05.txt, 10_rand_06.txt, 20_hand_01.txt, 20_hand_02.txt
Case Name Status Exec Time Memory
00_example_01.txt AC 1 ms 384 KB
00_example_02.txt AC 1 ms 384 KB
10_rand_01.txt AC 1 ms 384 KB
10_rand_02.txt AC 1 ms 384 KB
10_rand_03.txt AC 1 ms 384 KB
10_rand_04.txt AC 1 ms 384 KB
10_rand_05.txt AC 1 ms 384 KB
10_rand_06.txt AC 1 ms 384 KB
20_hand_01.txt AC 1 ms 384 KB
20_hand_02.txt AC 1 ms 384 KB