在C ++中找到第n个包含数字k或可被k整除的数字
给定两个正整数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
以上是 在C ++中找到第n个包含数字k或可被k整除的数字 的全部内容, 来源链接: utcz.com/z/321715.html