Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm số n chữ số không chứa chữ số cụ thể trong C++


Chúng ta được cho một số, gọi là num, và tổng số chữ số lưu trong biến nguyên, gọi là digi. Nhiệm vụ là tính số lượng các số n chữ số có thể tạo thành mà không chứa chữ số cho trước.

Đầu vào − n = 2, digit = 2

Đầu ra − đếm là 153

Giải thích − Số lượng tất cả các số 2 chữ số (n) không chứa chữ số 2 là 153 như 10, 11, 13, 14, 15, 16, 17, 18, 19, 30, 31, 33, 34,......., v.v.

Đầu vào − n = 3, digit = 3

Đầu ra − đếm là 2187

Giải thích − Số lượng tất cả các số 3 chữ số (n) không chứa chữ số 3 là 2187 như 10, 11, 13, 14, 15, 16, 17, 18, 19, 30, 31, 33, 34,......., v.v.

Phương pháp sử dụng trong chương trình dưới đây như sau

  • Nhập số 'n' và chữ số dưới dạng biến nguyên

  • Truyền các biến này cho hàm sẽ thực hiện phép đếm

  • Đặt hai biến min và max là giá trị mà 'n' có thể đạt đến. Ví dụ, số 2 chữ số bắt đầu từ giá trị nhỏ nhất 10 và kết thúc ở 99, tương tự, số 3 chữ số bắt đầu từ 100 đến 999.

  • Bắt đầu vòng lặp từ min đến max

  • Trong vòng lặp, bắt đầu while cho đến khi 'n' lớn hơn 0

  • Kiểm tra xem chữ số có xuất hiện hay không. Nếu có thì không thực hiện thao tác nào, nếu không có thì tăng đếm lên 1.

Ví dụ

#include<bits/stdc++.h> using namespace std; int count(int n, int digit){    int r =0;    int count = 0;    //tính min và max của số cho trước    int min = (int)(pow(10, n-1));    int max = (int)(pow(10, n));    //bắt đầu vòng lặp đến max bắt đầu từ min    for(int i=min; i<max; i++){       int a=i;       int f=0;       //khi a lớn hơn 0       while(a>0){          r=a%10;          a=a/10;          if(r==digit){             f++;          }          if(f==0){             count++;          }       }    }    return count; } int main(){    int n = 2, digit = 2;    cout<<"Count of "<<n<< digit numbers not having a particular digit "<<digit<<" is : "<<count(n, digit);    return 0; }

Đầu ra

Nếu chúng ta chạy mã trên, chúng ta sẽ nhận được đầu ra sau −

Count of 2 digit numbers not having a particular digit 2 is :153