दिए गए दो धनात्मक पूर्णांक n और k, और हमें nवीं संख्या खोजनी है जिसमें अंक k हो या k से विभाज्य हो। k [2 से 9] की रेंज में होगा। तो यदि n और k क्रमशः 15 और 3 हैं, तो आउटपुट 33 होगा। क्योंकि संख्याएं [3, 6, 9, 12, 13, 15, 18, 21, 23, 24, 27, 30, 31, 33] ये वे संख्याएं हैं जहां प्रत्येक तत्व में अंक k = 3 होता है या k से विभाज्यता होती है और इसमें nवीं संख्या 33 है। तो आउटपुट 33 है।
प्रत्येक संख्या की जांच करें जिसमें k हो और k का गुणक हो, और तब तक गिनें जब तक हमें nवां तत्व न मिल जाए।
उदाहरण
#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;
}
आउटपुट
Last number is 20 before that the number contains 2 and multiple of 2