★★ Java の宿題ここで答えます Part 68 ★★at TECH
★★ Java の宿題ここで答えます Part 68 ★★ - 暇つぶし2ch457:デフォルトの名無しさん
09/11/07 03:28:13
>>456
前に見たような課題だな。

print()が遅いから計算だけをそれぞれ実行させた場合
BigInteger:45ms
Qinteger:80ms
くらいだった。あとは自力でチューニングしてみてくれ。

  private int maxDigit = 0;
  public Qinteger times(int n) {
    long temp;
    int carry = 0;
    for (int i = MAXARR - 1; maxDigit < 0 && i >= 0; i--) if (num[i] != 0) { maxDigit = i; break; }
    for (int i = 0; i < MAXARR && i <= maxDigit; i++) {
      if (num[i] == 0) { num[i] = carry; carry = 0; continue; }
      temp = (long)num[i] * n;
      num[i] = carry + (int)(temp % MAXINT);
      carry = (int)(temp / MAXINT);
      if (i == maxDigit && carry != 0) maxDigit++;
    }
    return this;
  }


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch