我要计算函数H(N) 其中优化上非常大的数字运算
H(0)=0;
H(i)=H(i-1)×A+Ci mod B;
10<=A,B<=10^15;
C是n个元素
下面的代码需要太多时间的数组...任何更好的方式来做到这一点?
public BigInteger H(int no) {
if(no>0) {
bi=H(no-1);
bi=bi.multiply(BigInteger.valueOf(A));
bi=bi.add(BigInteger.valueOf(c[no-1]));
bi=bi.remainder(BigInteger.valueOf(B));
return bi;
}
return BigInteger.ZERO;
}
Ci的本质是什么;它的长度是多少?它是否是随机的?它是否包含很多零,相似的值或类似的模式?如果是这样,算法的改变可能会加快速度。 – mvds 2010-08-08 17:07:26
似乎公式中缺少一些括号。 – starblue 2010-08-09 09:16:19