Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาการเรียงสับเปลี่ยนของ n ซึ่งหารด้วย 3 ลงตัวแต่หารด้วย 6 ไม่ลงตัวใน C++


สมมติว่าเรามีตัวเลข n และเราต้องหาการเรียงสับเปลี่ยนของตัวเลขนี้ ที่หารด้วย 3 ลงตัว แต่หารด้วย 6 ไม่ลงตัว หากไม่มีค่าดังกล่าว ให้คืนค่า -1 ตัวอย่างเช่น ถ้า n คือ 336 ผลลัพธ์จะเป็น 363

อย่างที่เราทราบกันดีอยู่แล้วว่าจำนวนหนึ่งหารด้วย 6 ลงตัว หมายความว่ามันหารด้วย 3 กับ 2 ลงตัว ดังนั้นแต่ละจำนวนคู่ที่หารด้วย 3 ลงตัวก็จะหารด้วย 6 ลงตัว หากเรานำตัวเลขที่หารด้วย 3 ลงตัวเข้ากับเลขคู่ลงตัว เพื่อทำให้แปลกก็จะเป็นผล

ตัวอย่าง

#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