C++中求A的阶乘除以B的阶乘的最后一位数

如果我们有两个整数A和B,且B> = A,则必须计算B的最后一位!/ 一种!当A = 2且B = 4时,结果为2、2!= 2和4!= 24,所以24/2 =12。最后一位是2。

我们知道阶乘的最后一位将位于集合{0,1,2,4,4,6}中,然后按照以下步骤解决此问题:

  • 我们会发现A和B之间的区别

  • 如果diff> = 5,则答案为0

  • 否则,从(A +1)迭代到B。然后相乘并存储。

  • 乘法的最后一位将是答案。

示例

#include<iostream>
using namespace std;
int findLastDigit(long long int A, long long int B) {
   int x = 1;
   if (A == B)
      return 1;
   else if ((B - A) >= 5)
      return 0;
   else {
      for (long long int i = A + 1; i <= B; i++)
         x = (x * (i % 10)) % 10;
      return x % 10;
   }
}
int main() {
   cout << "Last digit is: " << findLastDigit(2, 4);
}

输出结果

Last digit is: 2