📌  相关文章
📜  找出可被 3 整除但不能被 6 整除的 n 的排列

📅  最后修改于: 2021-10-26 05:21:41             🧑  作者: Mango

给定一个整数n     .任务是找到另一个整数,它是 n 的排列,可以被 3 整除但不能被 6 整除。假设 n 可以被 6 整除。如果没有这样的排列是可能的,则打印 -1。

例子

Input: n = 336
Output: 363

Input: n = 48
Output: -1

对于能被 6 整除的数,它必须能被 3 和 2 整除,意思是每个能被 3 整除的偶数都能被 6 整除。 所以,能被 3 整除但不能被 6 整除的整数是能被 3 整除的奇数.
因此,如果整数 n 包含任何奇数,则存在可被 3 整除但不能被 6 整除的排列,否则不存在此类排列。

算法

  1. 让 LEN 是整数的长度(即 ceil(log10(n)))。
  2. 迭代 LEN 并检查 n 是偶数还是奇数。
    • 如果 n 是奇数返回 n
    • 否则正确 – 旋转 n 一次。并继续。
  3. 如果 LEN 结束返回 -1

下面是上述方法的实现:

C++
// C++ program to find permutation of n
// which is divisible by 3 but not
// divisible by 6
 
#include 
using namespace std;
 
// Function to find the permutation
int findPermutation(int n)
{
    // length of integer
    int len = ceil(log10(n));
 
    for (int i = 0; i < len; i++) {
        // if integer is even
        if (n % 2 != 0) {
            // return odd integer
            return n;
        }
        else {
            // rotate integer
            n = (n / 10) + (n % 10) * pow(10, len - i - 1);
            continue;
        }
    }
 
    // return -1 in case no required
    // permutation exists
    return -1;
}
 
// Driver Code
int main()
{
    int n = 132;
 
    cout << findPermutation(n);
 
    return 0;
}


Java
// Java program to find permutation
// of n which is divisible by 3
// but not divisible by 6
import java.lang.*;
import java.util.*;
 
class GFG
{
// Function to find the permutation
static int findPermutation(int n)
{
    // length of integer
    int len = (int)Math.ceil(Math.log10(n));
 
    for (int i = 0; i < len; i++)
    {
        // if integer is even
        if (n % 2 != 0)
        {
            // return odd integer
            return n;
        }
        else
        {
            // rotate integer
            n = (n / 10) + (n % 10) *
                (int)Math.pow(10, len - i - 1);
            continue;
        }
    }
 
    // return -1 in case no required
    // permutation exists
    return -1;
}
 
// Driver Code
public static void main(String args[])
{
    int n = 132;
 
    System.out.println(findPermutation(n));
}
}
 
// This code is contributed
// by Akanksha Rai(Abby_akku)


Python3
# Python3 program to find permutation
# of n which is divisible by 3 but
# not divisible by 6
from math import log10, ceil, pow
 
# Function to find the permutation
def findPermutation(n):
     
    # length of integer
    len = ceil(log10(n))
 
    for i in range(0, len, 1):
         
        # if integer is even
        if n % 2 != 0:
             
            # return odd integer
            return n
        else:
             
            # rotate integer
            n = ((n / 10) + (n % 10) *
                  pow(10, len - i - 1))
            continue
         
    # return -1 in case no required
    # permutation exists
    return -1
 
# Driver Code
if __name__ == '__main__':
    n = 132
 
    print(int(findPermutation(n)))
 
# This code is contributed
# by Surendra_Gangwar


C#
// C# program to find permutation
// of n which is divisible by 3
// but not divisible by 6
using System;
 
class GFG
{
// Function to find the permutation
static int findPermutation(int n)
{
    // length of integer
    int len = (int)Math.Ceiling(Math.Log10(n));
 
    for (int i = 0; i < len; i++)
    {
        // if integer is even
        if (n % 2 != 0)
        {
            // return odd integer
            return n;
        }
        else
        {
            // rotate integer
            n = (n / 10) + (n % 10) *
                (int)Math.Pow(10, len - i - 1);
            continue;
        }
    }
 
    // return -1 in case no required
    // permutation exists
    return -1;
}
 
// Driver Code
public static void Main()
{
    int n = 132;
 
    Console.WriteLine(findPermutation(n));
}
}
 
// This code is contributed
// by Akanksha Rai(Abby_akku)


PHP


Javascript


输出:
213

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程