เราได้รับช่วงโดยเริ่มจากค่าจำนวนเต็มที่ถือโดยตัวแปร สมมติว่าเริ่มต้นจนถึงสิ้นสุดตัวแปร และภารกิจคือการนับจำนวนรวมของตัวเลขแฟกทอเรียลที่มีอยู่ในช่วงที่กำหนด
จำนวนแฟกทอเรียลคืออะไร
แฟกทอเรียลของตัวเลขคำนวณโดยการคูณตัวเลขในตัวเลขโดยลดค่าของหลักลง 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