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

C++에서 3으로 나눌 수 있지만 6으로 나눌 수 없는 n의 순열 찾기

<시간/>

숫자 n이 있고 3으로 나눌 수 있지만 6으로 나눌 수 없는 이 수의 순열을 찾아야 한다고 가정합니다. 그러한 값을 만들 수 없으면 -1을 반환합니다. 예를 들어, n이 336이면 출력은 363이 될 수 있습니다.

우리가 알고 있듯이 숫자는 6으로 나눌 수 있다는 것은 3과 2로 나눌 수 있음을 의미합니다. 따라서 3으로 나눌 수 있는 각 짝수는 6으로 나눌 수 있습니다. , 이상하게도 결과가 됩니다.

#include<iostream>
#include<cmath>
using namespace std;
int findNumber(int n) {
   int digit_count = ceil(log10(n));
   for (int i = 0; i < digit_count; i++) {
      if (n % 2 != 0) {
         return n;
      } else {
         n = (n / 10) + (n % 10) * pow(10, digit_count - i - 1);
         continue;
      }
   }
   return -1;
}
int main() {
   int n = 132;
   cout <<"The permutation of "<<n << " that is divisible by 3 but not by 6 is:"<< findNumber(n);
}

출력

The permutation of 132 that is divisible by 3 but not by 6 is:213