У меня есть вопрос, в котором я должен найти последнюю ненулевую цифру факториала числа. Я использовал один и тот же код для java и C, но в обоих случаях это занимает разное время.
int lastDigitDiffZero(long n) {
int dig[] = {1, 1, 2, 6, 4, 2, 2, 4, 2, 8};
int i=(int) n;
if (n < 10)
return dig[i];
if (((n/10)%10)%2 == 0)
return (6*lastDigitDiffZero(n/5)*dig[(int)n%10]) % 10;
else
return (4*lastDigitDiffZero(n/5)*dig[(int)n%10]) % 10;
}
Я хочу знать, почему это занимает разное время и что мне делать, чтобы сократить время работы?
@akshayapandey
дал ответ на ваш первый вопрос. Для второго вы можете опубликовать сообщение на [CodeReview](codereview.stackexchange.com); обратите внимание, что рабочий код обязателен - person meowgoesthedog   schedule 25.01.2018leastSignificantDigitInFactorial()
, а еще лучше задокументируйте его с помощью doxygen (или лучше ). - person greybeard   schedule 08.03.2018