Chúng ta đã cho một dãy [l, r] và một số k. Mục đích là tìm tất cả các số giữa l và r (l <=number <=r) sao cho (đảo ngược của số đó) - (số) kết quả thành tích của k.
Chúng ta sẽ kiểm tra điều kiện này bằng cách bắt đầu từ l đến r, tính toán đảo ngược của mỗi số. Bây giờ trừ số khỏi đảo ngược của nó và kiểm tra xem (chênh lệch tuyệt đối)% k ==0. Nếu có thì hãy tăng số lượng.
Hãy cùng hiểu với các ví dụ.
Đầu vào - L =21, R =25, K =6
Đầu ra - Đếm số - 2
Giải thích -
The numbers their reverse and difference is: 21, 12, | 21-12 |=9, 9%6!=0 22, 22, | 22-22 |=0 0%6=0 count=1 23,32, | 32-23 | =9 9%6!=0 24,42, | 42-24 | =18 18%6=0 count=2 25,52, | 52-25 | =27 27%6!=0 Total numbers that meet the condition are 2 ( 22,24 )
Đầu vào - L =11, R =15, K =5
Đầu ra - Đếm số - 1
Giải thích -
The only number is 11 , | 11-11 | is 0 and 0%5=0
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Chúng tôi lấy một số nguyên L và R để xác định phạm vi. Và K để kiểm tra số chia.
-
Hàm countNumbers (int l, int r, int k) lấy l, r và k làm đầu vào và trả về tổng số các số đáp ứng điều kiện bắt buộc.
-
Lấy số lượng ban đầu là 0.
-
Đảo ngược số rev =0.
-
Lấy phần dư còn lại =0.
-
Bắt đầu từ i =l đến i =r.
-
Lưu trữ số hiện tại i trong num. Và rev của nó =0.
-
Bây giờ đảo ngược số num, while (num> 0). rem =num% 10. rev =rev * 10 + rem. num =num / 10.
-
Sau khi kết thúc trong khi, vòng quay ngược lại với i.
-
Tính chênh lệch tuyệt đối của vòng quay và giá trị ban đầu i. Nếu sự khác biệt này | i-rev |% k ==0. Sau đó, tăng số lượng.
-
Làm điều này cho tất cả các số trong phạm vi.
-
Giá trị cuối cùng của số đếm được trả về dưới dạng các số có hiệu với số ngược lại là tích của k.
Ví dụ
#include <iostream> using namespace std; int countNumbers(int l, int r, int k){ int rev = 0; int count=0; int rem=0; for (int i = l; i <= r; i++){ int num=i; rev=0; while (num > 0){ // reverse the number rem=num%10; rev = rev * 10 + rem; num /= 10; } if((abs(i-rev))%k==0) //original number is i and its reverse is rev { count++; } } return count; } int main(){ int L= 18, R = 24, K = 6; cout <<" Numbers whose difference with reverse is product of k:"<<countNumbers(L,R,K); return 0; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Numbers whose difference with reverse is product of k:4