Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm hoán vị của n chia hết cho 3 nhưng không chia hết cho 6 trong C ++

Giả sử chúng ta có một số n, và chúng ta phải tìm hoán vị của số này, số đó chia hết cho 3 nhưng không chia hết cho 6. Nếu không có giá trị nào như vậy có thể trả về -1. Ví dụ:nếu n là 336, thì đầu ra có thể là 363.

Như đã biết một số chia hết cho 6 nghĩa là chia hết cho 3 và 2. Vậy mỗi số chẵn chia hết cho 3 thì sẽ chia hết cho 6. Nếu ta hoán đổi các chữ số của một số vừa chia hết cho 3 lại vừa chia hết. , để làm cho nó kỳ lạ, nó sẽ là kết quả.

Ví dụ

#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);
}

Đầu ra

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