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

Đếm số n chữ số chia hết cho số cho trước trong C++


Chúng ta được cho hai phần tử, gọi là d và num, nhiệm vụ là tìm các số d chữ số chia hết cho num.

Nói đơn giản, giả sử chúng ta có đầu vào 2 cho d, vậy chúng ta sẽ trước tiên tìm tất cả các số 2 chữ số, tức là từ 10-99, sau đó tìm tất cả các số chia hết cho num.

Hãy hiểu rõ hơn qua các ví dụ sau −

Đầu vào − digit = 2, num= 12

Đầu ra − Số lượng số n chữ số chia hết cho số cho trước: 8

Giải thích − Các số 2 chữ số chia hết cho 12 là 12, 24, 36, 48, 60, 72, 84 và 96, nên có 8 số 2 chữ số chia hết cho 12.

Đầu vào − digit = 2, num= 9

Đầu ra − Số lượng số n chữ số chia hết cho số cho trước − 10

Giải thích − Các số 2 chữ số chia hết cho 9 là 18, 27, 36, 45, 54, 63, 72, 81, 90 và 99, nên có 10 số 2 chữ số chia hết cho 9.

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

  • Nhập phần tử digit và num làm đầu vào.

  • Gán biến count = 0 để đếm số chữ số chia hết cho num.

  • Khai báo và đặt digi_first = pow(10, digit - 1)

  • Khai báo và đặt digi_last = pow(10, digit)

  • Bây giờ khai báo và đặt d_first = digi_first % num và d_last = digi_last % num

  • Sau khi tìm d_first và d_last, đặt digi_first = (digi_first - d_first) + num và digi_last = digi_last - d_last

  • Bây giờ đặt count = ((digi_last - digi_first) / num + 1).

  • Trả về và in count.

Ví dụ

#include <cmath> #include <iostream> using namespace std; int main(){    int digit = 2 , num = 9;    //lưu trữ đếm    int count= 0 ;    int digi_first = pow(10, digit - 1);    int digi_last = pow(10, digit);    int d_first = digi_first % num;    int d_last = digi_last % num;    digi_first = (digi_first - d_first) + num;    digi_last = digi_last - d_last;    count = ((digi_last - digi_first) / num + 1);    cout<<"Count of n digit numbers divisible by given number: "<<count<<"\n";    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 n digit numbers divisible by given number: 10