Cho hai số nguyên A và B, B ≥ A, tính chữ số cuối của B! / A! Khi A = 2, B = 4, kết quả 2 vì 2! = 2, 4! = 24, 24/2 = 12, chữ số cuối 2.
Vì chữ số cuối giai thừa nằm trong {0, 1, 2, 4, 6}, làm theo các bước:
- Tìm hiệu giữa A và B
- Nếu diff ≥ 5, đáp án 0
- Ngược lại, lặp từ (A+1) đến B, nhân và lưu lại.
- Chữ số cuối của tích là đáp án.
Ví dụ mã nguồn
#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); } Kết quả
Last digit is: 2