我有一个问题,我必须找到一个数字的阶乘的最后一个非零数字。我对java和C使用了相同的代码,但两者都需要不同的时间。
//this.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;
this.component = this.element.hasClass('date') ? this.element.find('.input-group-prepend, .input-group-append, .btn') : false;
我想知道为什么需要不同的时间,我该怎么做才能缩短运行时间?
答案 0 :(得分:0)
请找到优化版本:
private static final int DIG[] = { 1, 1, 2, 6, 4, 2, 2, 4, 2, 8 };
static int lastDigitDiffZero(long n) {
if (n < 10)
return DIG[(int) n];
int t1 = (int) (n % 10);
int t2 = lastDigitDiffZero(n / 5) * DIG[t1];
if (((n / 10) % 10) % 2 == 0) {
return (6 * t2) % 10;
} else
return (4 * t2) % 10;
}
答案 1 :(得分:0)
你能不能:
private static int lastDigitDiffZero(long n)
{
int temp = (int) n;
int mod = temp%10;
return (mod == 0 ? lastDigitDiffZero(temp/10) : mod);
}