- 457 名前:デフォルトの名無しさん mailto:sage [2009/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; }
|

|