给定一个整数 .任务是找到另一个整数,它是 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 整除的排列,否则不存在此类排列。
算法:
- 让 LEN 是整数的长度(即 ceil(log10(n)))。
- 迭代 LEN 并检查 n 是偶数还是奇数。
- 如果 n 是奇数返回 n
- 否则正确 – 旋转 n 一次。并继续。
- 如果 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 现场工作专业课程和学生竞争性编程现场课程。