在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

回到顶部