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

Đếm các số trong phạm vi chia hết cho tất cả các chữ số khác không của nó trong C ++

Chúng tôi được cung cấp hai số START và END để xác định một dải số. Mục tiêu là tìm tất cả các số trong dải [START, END] chia hết cho tất cả các chữ số khác không của nó. Chúng tôi sẽ thực hiện điều này bằng cách duyệt các số từ START đến END và đối với mỗi số, chúng tôi sẽ kiểm tra xem số đó có chia hết cho tất cả các chữ số khác không bằng cách sử dụng vòng lặp while. Nếu có, số lượng tăng dần.

Hãy cùng hiểu với các ví dụ.

Đầu vào

START=10 END=20

Đầu ra

Numbers that are divisible by all its non-zero digits: 14

Giải thích

Numbers 10, 11, 12, 15, 20 are divisible by all their non-zero digits.

Đầu vào

START=100 END=200

Đầu ra

Numbers that are divisible by all its non-zero digits: 25

Giải thích

This is list of numbers divisible by all non-zero digits : 100 101 102 104 105 110 111 112 115 120 122 124 126 128 132 135 140 144 150 155 162 168 175 184 200

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 số nguyên START và END làm biến phạm vi.

  • Hàm diviblebyDigits (int start, int end) nhận các biến phạm vi và trả về tổng số các số chia hết cho tất cả các chữ số khác không của chúng.

  • Lấy số lượng biến ban đầu là 0 cho những số như vậy.

  • Lấy cờ biến là 0

  • Dải số theo chiều ngang bằng cách sử dụng vòng lặp for. i =start to i =end

  • Bây giờ đối với mỗi số num =i, sử dụng vòng lặp while kiểm tra xem số có> 0 hay không.

  • tính toán chữ số =num% 10. Nếu chữ số> 0 và i% chữ số ==0 đặt cờ =1. Cờ khác =0 và ngắt. Giảm num =num / 10 để kiểm tra chữ số tiếp theo.

  • Nếu tất cả các chữ số khác không chia hết cho i, cờ là 1. Số lượng tăng dần.

  • Ở cuối tất cả các vòng đếm sẽ có tổng số chia hết cho các chữ số khác 0

  • Trả về kết quả là số lượng.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int divisiblebyDigits(int start, int end){
   int count = 0;
   int flag=0;
   for (int i = start; i <= end; i++){
      int num=i;
      while(num>0){
         int digit=num%10;
         if(digit>0){
            if(i%digit==0)
               { flag=1; } //set flag
            else{
               flag=0; //un-set flag
               break;
            }
         }
         num=num/10;
      }
      if(flag==1) //divisible by all non-zero digits {
         count++;
         //cout<<i<<" ";
      }
   }
   return count;
}
int main(){
   int START = 10, END = 50;
   cout <<"Numbers that are divisible by all its non-zero digits: "<< divisiblebyDigits(START,END);
   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 that are divisible by all its non-zero digits: 14