★★ Java の宿題ここで答えます Part 68 ★★ at TECH
[2ch|▼Menu]
457:デフォルトの名無しさん
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

5041日前に更新/316 KB
担当:undef