Given an integer . The task is to find another integer which is permutation of n, divisible by 3 but not divisible by 6. Given that n is divisible by 6. If no such permutation is possible print -1.
Examples:
Input: n = 336 Output: 363 Input: n = 48 Output: -1
For a number to be divisible by 6, it must be divisible by 3 as well as 2, means every even integer divisible by 3 is divisible by 6. So, an integer which is divisible by 3 but not 6 is odd integer divisible by 3.
So, if integer n contains any odd integer then there exists a permutation which is divisible by 3 but not 6, else no such permutation exist.
Algorithm:
- let LEN is length of integer (i.e. ceil(log10(n))).
- iterate over LEN and check whether n is even or odd.
- if n is odd return n
- else right – rotate n once. and continue.
- if LEN is over return -1
Below is the implementation of the above approach:
C++
// C++ program to find permutation of n// which is divisible by 3 but not// divisible by 6#include <bits/stdc++.h>using namespace std;// Function to find the permutationint 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 Codeint 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 6import java.lang.*;import java.util.*;class GFG{// Function to find the permutationstatic 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 Codepublic 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 6from math import log10, ceil, pow# Function to find the permutationdef 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 Codeif __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 6using System;class GFG{// Function to find the permutationstatic 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 Codepublic static void Main(){ int n = 132; Console.WriteLine(findPermutation(n));}}// This code is contributed// by Akanksha Rai(Abby_akku) |
PHP
<?php// PHP program to find permutation // of n which is divisible by 3 but// not divisible by 6// Function to find the permutationfunction findPermutation($n){ // length of integer $len = ceil(log10($n)); for ($i = 0; $i < $len; $i++) { // if integer is even if ($n % 2 != 0) { // return odd integer return (int)$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$n = 132;echo findPermutation($n);// This code is contributed by mits?> |
Javascript
<script>// java script program to find permutation// of n which is divisible by 3 but// not divisible by 6// Function to find the permutationfunction findPermutation(n){ // length of integer let len = Math.ceil(Math.log10(n)); for (let i = 0; i < len; i++) { // if integer is even if (n % 2 != 0) { // return odd integer return parseInt(n); } else { // rotate integer n = (n / 10) + (n % 10) * Math.pow(10, len - i - 1); continue; } } // return -1 in case no required // permutation exists return -1;}// Driver Codelet n = 132;document.write( findPermutation(n));// This code is contributed by sravan kumar (vignan)</script> |
213
Time complexity: O(logn) for given input number n
Auxiliary space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Here you will find 72490 more Information on that Topic: geeksforgeeks.org/find-permutation-of-n-which-is-divisible-by-3-but-not-divisible-by-6/ […]