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

Đếm số n chữ số không có một chữ số cụ thể trong C ++

Chúng ta được cho một số, giả sử là num và tổng số chữ số được lưu trữ trong một biến kiểu số nguyên, giả sử là digi và nhiệm vụ là tính tổng số n chữ số đó có thể được tạo thành mà chữ số đã cho không có ở đó.

Đầu vào - n =2, chữ số =2

Đầu ra - số đếm là 153

Giải thích - đếm tất cả các số có hai chữ số (n) không có chữ số 2 là 153 là 10, 11, 13, 14, 15, 16, 17, 18, 19, 30, 31, 33, 34, ....... , v.v.

Đầu vào - n =3, chữ số =3

Đầu ra - số lượng là 2187

Giải thích - Số có ba chữ số (n) không có chữ số 3 là 2187 là 10, 11, 13, 14, 15, 16, 17, 18, 19, 30, 31, 33, 34, ....... , v.v.

Phương pháp tiếp cận được 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 số nguyên

  • Chuyển các biến này cho một hàm sẽ thực hiện thao tác đếm

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

  • Bắt đầu vòng lặp từ tối thiểu đến tối đa

  • Trong vòng lặp, hãy bắt đầu cho đến khi ‘n’ lớn hơn 0

  • Kiểm tra xem số có ở đó hay không. Nếu số ở đó thì không thực hiện bất kỳ thao tác nào và nếu không có thì hãy tăng số lượng lên 1.

Ví dụ

#include<bits/stdc++.h>
using namespace std;
int count(int n, int digit){
   int r =0;
   int count = 0;
   //calculate the min and max of the given number
   int min = (int)(pow(10, n-1));
   int max = (int)(pow(10, n));
   //start the loop till max value start from min
   for(int i=min; i<max; i++){
      int a=i;
      int f=0;
      //while a is greater than 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 đoạn mã trên, chúng ta sẽ nhận được kết quả sau -

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