ถ้าเรามีจำนวนเต็มสองจำนวน A และ B และ B >= A เราต้องคำนวณตัวเลขหลักสุดท้ายของ B! / A! เมื่อค่าของ A = 2 และ B = 4 ผลลัพธ์คือ 2 2! = 2 และ 4! = 24 ดังนั้น 24/2 = 12 ตัวเลขหลักสุดท้ายคือ 2
เนื่องจากเรารู้ว่าตัวเลขหลักสุดท้ายของแฟกทอเรียลจะอยู่ในเซต {0, 1, 2, 4, 6} ให้ทำตามขั้นตอนเหล่านี้เพื่อแก้ปัญหานี้:
- เราจะหาความต่างระหว่าง A และ B
- ถ้า diff >= 5 คำตอบคือ 0
- มิฉะนั้น วนลูปจาก (A + 1) ถึง B คูณและเก็บไว้
- ตัวเลขหลักสุดท้ายของการคูณจะเป็นคำตอบ
ตัวอย่างโค้ด C++
#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