Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 숫자 k를 포함하거나 k로 나눌 수 있는 n번째 숫자 찾기

<시간/>

두 개의 양의 정수 n과 k가 주어지고 k가 포함되거나 k로 나눌 수 있는 n번째 숫자를 찾아야 합니다. 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