Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để tìm các số trong một phạm vi với gốc kỹ thuật số cho trước

Tổng của chữ số của nó có thể tìm thấy căn số của một số; nếu tổng là một chữ số duy nhất, nó là một căn số. Trong hướng dẫn này, chúng ta sẽ thảo luận về một vấn đề trong đó chúng ta được cho một dãy số và một số nguyên X, và chúng ta cần đếm xem có bao nhiêu số trong dãy có gốc số là X trong đó X là số có một chữ số, chẳng hạn

 Đầu vào:l =13, r =25, X =4 Đầu ra:2 Phép toán:Các số trong phạm vi (13,25) có tổng chữ số 4 là 13 và 22 Đầu vào:l =11, r =57 Đầu ra:6  

Phương pháp tiếp cận để tìm giải pháp

Phương pháp tiếp cận đơn giản

Theo cách tiếp cận đơn giản, chúng ta có thể duyệt qua các số từ l đến r và kiểm tra xem tổng của nó có bằng X. Nhưng điều này sẽ tạo ra độ phức tạp về thời gian của O (N) trong đó N là tổng số trong phạm vi.

Phương pháp tiếp cận hiệu quả

Để tìm các số trong một dãy có gốc số là X, Vì vậy, chúng ta cần kiểm tra tổng các chữ số của mọi số trong dãy xem nó có bằng K hay không và tổng các chữ số luôn bằng num% chín và nó là chín nếu phần dư đến 0, Vì vậy, nếu X =9 thì thay đổi nó thành 0.

Để tìm số lượng các số chia cả phạm vi thành các nhóm là 9. Khi đó sẽ có đúng một số trong mỗi nhóm có môđun chín sẽ bằng X. Sau đó, kiểm tra các số còn lại không có trong các nhóm; kiểm tra từng số riêng biệt để thỏa mãn điều kiện của num% 9 =X.

Ví dụ

Mã C ++ cho phương pháp tiếp cận trên

 #include  #define ll long intusing namespace std; int main () {int l =13; int r =25; int X =4; nếu (X ==9) X =0; // đếm tất cả các số trong dãy int total =r - l + 1; // Chia số thành các nhóm tối đa là 9 int groups =total / 9; // vì đối với N nhóm sẽ có N số với modulo 9 bằng X. int result =groups; // kiểm tra tất cả các số còn lại int left_out =total% 9; // kiểm tra từng số còn lại riêng biệt cho điều kiện. for (int i =r; i> r - left_out; i--) {int rem =i% 9; if (rem ==X) kết quả ++; } cout <<"Tổng số trong một Dải (l, r) với Gốc số (X) đã cho là:" < 

Đầu ra

 Tổng số trong một Dải (l, r) với Gốc số (X) đã cho là:2 

Kết luận

Trong hướng dẫn này, chúng tôi đã thảo luận về một vấn đề với một dải số và một gốc kỹ thuật số. Chúng ta cần tìm tất cả các số có gốc số như X. Chúng ta đã thảo luận về một cách tiếp cận đơn giản và một cách tiếp cận hiệu quả để giải quyết vấn đề này bằng cách chia các số thành các nhóm có 9 chữ số.

Mỗi nhóm chứa một số có gốc kỹ thuật số là X. Chúng tôi cũng đã thảo luận về chương trình C ++ cho vấn đề này mà chúng tôi có thể thực hiện với các ngôn ngữ lập trình như C, Java, Python, v.v. Chúng tôi hy vọng bạn thấy hướng dẫn này hữu ích.