สมมติว่าเรามีตัวเลข 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