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

Đếm các số có 0 dưới dạng một chữ số trong C ++

Chúng tôi được cung cấp một số N. Mục tiêu là tìm các số có 0 là chữ số và nằm trong phạm vi [1, N].

Chúng ta sẽ thực hiện việc này bằng cách duyệt các số từ 10 đến N (không cần kiểm tra từ 1 đến 9) và đối với mỗi số, chúng ta sẽ kiểm tra từng chữ số bằng cách sử dụng vòng lặp while. Nếu bất kỳ chữ số nào được tìm thấy là số gia tăng bằng 0 và chuyển sang số tiếp theo, nếu không, hãy giảm số đó đi 10 để kiểm tra các chữ số cho đến khi số> 0.

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

Đầu vào

N=11

Đầu ra

Numbers from 1 to N with 0 as digit: 1

Giải thích

Starting from i=10 to i<=11
Only 10 has 0 as a digit. No need to check the range [1,9].

Đầu vào

N=100

Đầu ra

Numbers from 1 to N with 0 as digit: 10

Giải thích

10, 20, 30, 40, 50, 60, 70, 80, 90, 100. Ten numbers have 0 as digits.

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 N.

  • Hàm haveZero (int n) nhận n làm tham số và trả về số lượng các số có 0 là chữ số

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

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

  • Bây giờ đối với mỗi số num =i, sử dụng vòng lặp while kiểm tra xem num% 10 ==0, nếu sai thì chia num cho 10 và chuyển sang chữ số tiếp theo cho đến khi num> 0

  • Nếu đúng, hãy dừng kiểm tra thêm, đếm gia số và ngắt vòng lặp while.

  • Ở cuối tất cả các vòng đếm sẽ có tổng các số có 0 là chữ số từ 1 đến N.

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

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int haveZero(int n){
   int count = 0;
   for (int i = 1; i <= n; i++) {
      int num = i;
      while(num>1){
         int digit=num%10;
         if (digit == 0){
            count++;
            break;
         }
         else
            { num=num/10; }
      }
   }
   return count;
}
int main(){
   int N = 200;
   cout <<"Numbers from 1 to N with 0 as digit: "<<haveZero(N);
   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 from 1 to N with 0 as digit: 29