เราได้รับช่วงโดยเริ่มจากค่าจำนวนเต็มที่ถือโดยตัวแปร สมมติว่าเริ่มต้นจนถึงสิ้นสุดตัวแปร และภารกิจคือการนับจำนวนรวมของตัวเลขแฟกทอเรียลที่มีอยู่ในช่วงที่กำหนด
จำนวนแฟกทอเรียลคืออะไร
แฟกทอเรียลของตัวเลขคำนวณโดยการคูณตัวเลขในตัวเลขโดยลดค่าของหลักลง 1 ซึ่งแสดงด้วยสัญลักษณ์ '!' เช่น 0!, 1!, 2!, 3!, 5!,.... ฯลฯ แฟกทอเรียลของ 0! และ 1! เป็น 1. เสมอ
I.e. factorial of 2 = 2 * (2-1) = 2 * 1 = 2 factorial of 3 = 3 * (3-1) * (2-1) = 3 * 2 * 1 = 6
ตัวอย่าง
Input − start = 5, end = 600 Output − Count of factorial numbers are 3
คำอธิบาย − เนื่องจากมีตัวเลข 3 ตัวที่มีตัวเลขแฟกทอเรียลอยู่ในช่วง 5-600
Input − start = 1, end = 100 Output − Count of factorial numbers are 5
คำอธิบาย − เนื่องจากมีตัวเลข 5 ตัวที่มีตัวเลขแฟกทอเรียลอยู่ในช่วง 5-600
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ป้อนช่วงและเก็บไว้ในตัวแปรเริ่มต้นและสิ้นสุด
-
ใช้ตัวแปรอื่น 'fact' เพื่อเก็บค่าแฟกทอเรียลและเริ่มต้นด้วย 1 และตัวแปรชั่วคราว 'i' เพื่อเพิ่มจำนวนตัวเลข
-
เริ่มวนซ้ำ ในขณะที่ fact น้อยกว่าจุดเริ่มต้น และคูณความจริงกับ i เพื่อคำนวณแฟกทอเรียลและยังเพิ่มค่าของ i ต่อไป
-
เริ่มวนรอบอื่น ในขณะที่ fact มีค่าน้อยกว่าตัวแปร end และเพิ่มค่าของตัวแปร r ต่อไป และตั้งค่า fact เป็น fact *i และเพิ่มค่าของ i ต่อไป
-
ตอนนี้ คืนค่าของ r ที่ถือจำนวนรวมของจำนวนแฟกทอเรียลทั้งหมด
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include <iostream>
using namespace std;
// To count the number of factorials
int factorials(int start, int end){
// Starting from 1 and find the first factorial number
// 'fact' greater than or equal to 'start'
int fact = 1, i = 1;
while (fact < start){
fact = fact*i;
i++;
}
// r to count factorial numbers in range start to end
int r = 0;
while (fact <= end){
r++;
fact = fact*i;
i++;
}
// Return the count of factorials in range
return r;
}
int main(){
int start = 5, end = 600;
cout << "Count of factorial numbers are " << factorials(start, end);
return 0;
} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of factorial numbers are 3