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

Đếm các số có hiệu số từ đảo ngược là tích của k trong C ++

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