在 C++ 中查找能被 3 整除但不能被 6 整除的 n 的排列


假设我们有一个数字 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

更新时间: 2019-12-18

79 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告