Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ หาตัวเลขหลักสุดท้ายเมื่อแฟกทอเรียลของ A หารแฟกทอเรียลของ B ลงตัว


ถ้าเรามีจำนวนเต็มสองจำนวน 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