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

โปรแกรม C++ เพื่อค้นหาตัวเลขในช่วงที่มี Digital Root


ผลรวมของตัวเลขสามารถหารากดิจิทัลของตัวเลขได้ หากผลรวมเป็นตัวเลขหลักเดียว แสดงว่าเป็นรากดิจิทัล ในบทช่วยสอนนี้ เราจะพูดถึงปัญหาที่เราได้รับช่วงของตัวเลขและจำนวนเต็ม X และเราต้องนับจำนวนตัวเลขในช่วงที่มีรากดิจิทัลเป็น X โดยที่ X เป็นตัวเลขหลักเดียว เช่น

อินพุต:l =13, r =25, X =4Output:2คำอธิบาย:ตัวเลขในช่วง (13,25) มีผลรวมหลัก 4 คือ 13 และ 22.Input:l =11, r =57Output:6 

แนวทางในการหาแนวทางแก้ไข

แนวทางง่ายๆ

ด้วยวิธีง่ายๆ เราสามารถข้ามผ่านตัวเลขจาก l ถึง r และตรวจสอบว่าผลรวมของมันเท่ากับ X หรือไม่ แต่สิ่งนี้จะสร้างความซับซ้อนของเวลาของ O(N) โดยที่ N คือจำนวนทั้งหมดในช่วง

แนวทางที่มีประสิทธิภาพ

ในการหาตัวเลขในช่วงที่มีรากดิจิทัลเป็น X เราจึงต้องตรวจสอบผลรวมของตัวเลขทุกตัวในช่วงว่ามีค่าเท่ากับ K หรือไม่ และผลรวมของหลักจะเท่ากับ num % เก้าเสมอ และถ้าเศษเหลือเป็นเก้า มา 0 ดังนั้นถ้า X =9 ก็เปลี่ยนเป็น 0

ในการหาจำนวนตัวเลข ให้แบ่งช่วงทั้งหมดออกเป็นกลุ่มๆ ละ 9 ตัว จากนั้นในแต่ละกลุ่มจะมีเลขตัวเดียวพอดีกันซึ่งโมดูโลเก้าจะเท่ากับ X หลังจากนั้น ให้ตรวจดูตัวเลขที่เหลือที่ไม่อยู่ในกลุ่ม ตรวจสอบแต่ละหมายเลขแยกกันเพื่อให้เป็นไปตามเงื่อนไขของ num % 9 =X.

ตัวอย่าง

รหัส C++ สำหรับแนวทางข้างต้น

#include #define ll เนมสเปซ intd ยาว int;int main(){ int l =13; int r =25; int X =4; ถ้า (X ==9) X =0; // นับตัวเลขทั้งหมดในช่วง int total =r - l + 1; // แบ่งตัวเลขออกเป็นกลุ่มสูงสุด 9 กลุ่ม =รวม / 9; // เนื่องจากสำหรับกลุ่ม N จะมีตัวเลข N ที่มีโมดูโล 9 เท่ากับ X. int ผลลัพธ์ =กลุ่ม; // ตรวจสอบตัวเลขที่เหลือทั้งหมด int left_out =รวม % 9; // ตรวจสอบแต่ละหมายเลขที่เหลือแยกกันสำหรับเงื่อนไข สำหรับ (int i =r; i> r - left_out; i--) { int rem =i % 9; ถ้า (rem ==X) ผลลัพธ์++; } cout <<"จำนวนทั้งหมดในช่วง ( l, r ) ที่กำหนด Digital Root(X) คือ:" <<ผล; คืนค่า 0;}

ผลลัพธ์

จำนวนทั้งหมดในช่วง ( l, r ) กับ Digital Root(X) ที่ระบุคือ:2

บทสรุป

ในบทช่วยสอนนี้ เราได้พูดถึงปัญหาเกี่ยวกับช่วงของตัวเลขและรูทดิจิทัล เราจำเป็นต้องค้นหาตัวเลขทั้งหมดที่มีรากดิจิทัลในขณะที่ X เราได้พูดคุยถึงแนวทางง่ายๆ และแนวทางที่มีประสิทธิภาพในการแก้ปัญหานี้โดยแบ่งตัวเลขออกเป็นกลุ่มๆ ละ 9 หลัก

แต่ละกลุ่มประกอบด้วยตัวเลขหนึ่งตัวที่มีรูทดิจิทัลเป็น X นอกจากนี้เรายังได้พูดถึงโปรแกรม C++ สำหรับปัญหานี้ ซึ่งเราสามารถดำเนินการกับภาษาการเขียนโปรแกรม เช่น C, Java, Python เป็นต้น เราหวังว่าคุณจะพบว่าบทช่วยสอนนี้มีประโยชน์