Algorithm

memo





min max を含む 、切のいい範囲を得、10点程度に分割。


  1. min=maxの場合、例外処理、min=max=0の場合も特殊処理
  2. min,max それぞれの数字の絶対数の次数を計算して、大体の範囲を得る。(微調整は後から)
  3. それぞれ0の場合は、例外処理で、範囲の最大(MAX)、最小値(MIN)を0とする。
  4. 次数計算で絶対値を取るので、min,maxが正負の場合で処理を分ける
  5. MIN.MAXはそれぞれmin,maxを絶対値で超える最小の10n を見つける。
  6. また、min,max から MINからMAXを10点分割できる1*10n 2*10n 5*10n のいづれかの増分値(inc)を見つける
  7. MAX,MINをチューニングするに当たり、場合わけを行う。
  8. max,minがともに正であれば、minを0にする判断もあり。(ex: if(max/2 > min) ...)
  9. max,minの符合が異なれば、MAX、MINはともにチューニング
  10. max,minがともに負であれば、manを0にする判断もあり。(ex: if(min/2 < max) ...)
  11. またmin,maxそれぞれの絶対値がincより少ない場合も対処必要。
  12. MAXのチューニングとして、MAXとmaxの間で、maxより大きくかつ、MAXより最大減incの整数倍を除いたもの
  13. MINのチューニングとして、MINとminの間で、minより小さくかつ、MINより最大減incの整数倍を加えたもの
  14. MAX,MIN,inc より 分割数(div)を最終決定する
  15. 最終解は
    for(int i=0; i <div+1 ; ++) min + inc * i