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

Tìm số thứ n chứa chữ số k hoặc chia hết cho k trong C++


Cho n, k (2≤k≤9), tìm số thứ n chứa chữ số k hoặc chia hết cho k. Ví dụ n=15, k=3 → 33 (dãy: 3,6,9,12,13,15,18,21,23,24,27,30,31,33).

Kiểm tra từng số: nếu chứa chữ số k hoặc chia hết k thì đếm, đến số thứ n dừng.

Ví dụ

#include<iostream> using namespace std; bool hasDigit(int n, int k) {    while (n > 0) {       int rem = n % 10;       if (rem == k)       return true;       n = n / 10;    }    return false; } int countNumbers(int n, int k) {    for (int i = k + 1, count = 1; count < n; i++) {       if (hasDigit(i, k) || (i % k == 0))          count++;       if (count == n)          return i;    }    return -1; } int main() {    int n = 10, k = 2;    cout << "Last number is " << countNumbers(n, k) << " before that the number contains " << k << " and multiple of " << k; }

Kết quả

Last number is 20 before that the number contains 2 and multiple of 2