Skip to main content

Check if permutation of number is power of 2 or not

Here given code implementation process.

// C program
// Check if permutation of number is power of 2 or not
#include <stdio.h>

// Check the both number have frequency is same or not
int isSameDigit(int num, int power)
{
	// Use to count number digit frequency
	// Digit [0 - 9]
	int a[10];
	int b[10];
	// Loop controlling variable
	int i = 0;
	// Set the initial frequency
	for (i = 0; i < 10; ++i)
	{
		a[i] = 0;
		b[i] = 0;
	}
	// Count digit frequency of num
	while (num > 0)
	{
		a[num % 10] += 1;
		// Remove last digit
		num = num / 10;
	}
	// Count digit frequency of power value
	while (power > 0)
	{
		b[power % 10]++;
		// Remove last digit
		power = power / 10;
	}
	// Compare frequency of both number
	for (i = 0; i < 10; ++i)
	{
		if (a[i] != b[i])
		{
			// When frequency are not same
			return 0;
		}
	}
	return 1;
}
void isPowerof2(int num)
{
	int result = 0;
	printf("\n Given num : %d", num);
	if (num > 0)
	{
		// Check all power of 2 in 32 bit integer
		for (int i = 0; i < 31 && result == 0; ++i)
		{
			if (num == (1 << i) || isSameDigit(num, 1 << i) == 1)
			{
				// Get resultant power
				result = (1 << i);
			}
		}
	}
	if (result != 0)
	{
		printf("\n Permutation %d is power of 2\n", result);
	}
	else
	{
		printf("\n No permutation of number %d is power of 2\n", num);
	}
}
int main(int argc, char
	const *argv[])
{
	// Test cases
	isPowerof2(76328);
	isPowerof2(1234);
	isPowerof2(8240);
	isPowerof2(23);
	isPowerof2(21);
	return 0;
}

input

 Given num : 76328
 Permutation 32768 is power of 2

 Given num : 1234
 No permutation of number 1234 is power of 2

 Given num : 8240
 Permutation 2048 is power of 2

 Given num : 23
 Permutation 32 is power of 2

 Given num : 21
 No permutation of number 21 is power of 2
// Java program for
// Check if permutation of number is power of 2 or not
public class PermutationPower
{
	// Check the both number have frequency is same or not
	public int isSameDigit(int num, int power)
	{
		// Use to count number digit frequency
		// Digit [0 - 9]
		int[] a = new int[10];
		int[] b = new int[10];
		// Loop controlling variable
		int i = 0;
		// Set the initial frequency
		for (i = 0; i < 10; ++i)
		{
			a[i] = 0;
			b[i] = 0;
		}
		// Count digit frequency of num
		while (num > 0)
		{
			a[num % 10] += 1;
			// Remove last digit
			num = num / 10;
		}
		// Count digit frequency of power value
		while (power > 0)
		{
			b[power % 10]++;
			// Remove last digit
			power = power / 10;
		}
		// Compare frequency of both number
		for (i = 0; i < 10; ++i)
		{
			if (a[i] != b[i])
			{
				// When frequency are not same
				return 0;
			}
		}
		return 1;
	}
	public void isPowerof2(int num)
	{
		int result = 0;
		System.out.print("\n Given num : " + num);
		if (num > 0)
		{
			// Check all power of 2 in 32 bit integer
			for (int i = 0; i < 31 && result == 0; ++i)
			{
				if (num == (1 << i) || isSameDigit(num, 1 << i) == 1)
				{
					// Get resultant power
					result = (1 << i);
				}
			}
		}
		if (result != 0)
		{
			System.out.print("\n Permutation " + result + " is power of 2\n");
		}
		else
		{
			System.out.print("\n No permutation of number " + num + " is power of 2\n");
		}
	}
	public static void main(String[] args)
	{
		PermutationPower task = new PermutationPower();
		// Test cases
		task.isPowerof2(76328);
		task.isPowerof2(1234);
		task.isPowerof2(8240);
		task.isPowerof2(23);
		task.isPowerof2(21);
	}
}

input

 Given num : 76328
 Permutation 32768 is power of 2

 Given num : 1234
 No permutation of number 1234 is power of 2

 Given num : 8240
 Permutation 2048 is power of 2

 Given num : 23
 Permutation 32 is power of 2

 Given num : 21
 No permutation of number 21 is power of 2
// Include header file
#include <iostream>
using namespace std;
// C++ program for
// Check if permutation of number is power of 2 or not

class PermutationPower
{
	public:
		// Check the both number have frequency is same or not
		int isSameDigit(int num, int power)
		{
			// Use to count number digit frequency
			// Digit [0 - 9]
			int a[10];
			int b[10];
			// Loop controlling variable
			int i = 0;
			// Set the initial frequency
			for (i = 0; i < 10; ++i)
			{
				a[i] = 0;
				b[i] = 0;
			}
			// Count digit frequency of num
			while (num > 0)
			{
				a[num % 10] += 1;
				// Remove last digit
				num = num / 10;
			}
			// Count digit frequency of power value
			while (power > 0)
			{
				b[power % 10]++;
				// Remove last digit
				power = power / 10;
			}
			// Compare frequency of both number
			for (i = 0; i < 10; ++i)
			{
				if (a[i] != b[i])
				{
					// When frequency are not same
					return 0;
				}
			}
			return 1;
		}
	void isPowerof2(int num)
	{
		int result = 0;
		cout << "\n Given num : " << num;
		if (num > 0)
		{
			// Check all power of 2 in 32 bit integer
			for (int i = 0; i < 31 && result == 0; ++i)
			{
				if (num == (1 << i) || this->isSameDigit(num, 1 << i) == 1)
				{
					// Get resultant power
					result = (1 << i);
				}
			}
		}
		if (result != 0)
		{
			cout << "\n Permutation " << result << " is power of 2\n";
		}
		else
		{
			cout << "\n No permutation of number " << num << " is power of 2\n";
		}
	}
};
int main()
{
	PermutationPower *task = new PermutationPower();
	// Test cases
	task->isPowerof2(76328);
	task->isPowerof2(1234);
	task->isPowerof2(8240);
	task->isPowerof2(23);
	task->isPowerof2(21);
	return 0;
}

input

 Given num : 76328
 Permutation 32768 is power of 2

 Given num : 1234
 No permutation of number 1234 is power of 2

 Given num : 8240
 Permutation 2048 is power of 2

 Given num : 23
 Permutation 32 is power of 2

 Given num : 21
 No permutation of number 21 is power of 2
// Include namespace system
using System;
// Csharp program for
// Check if permutation of number is power of 2 or not
public class PermutationPower
{
	// Check the both number have frequency is same or not
	public int isSameDigit(int num, int power)
	{
		// Use to count number digit frequency
		// Digit [0 - 9]
		int[] a = new int[10];
		int[] b = new int[10];
		// Loop controlling variable
		int i = 0;
		// Set the initial frequency
		for (i = 0; i < 10; ++i)
		{
			a[i] = 0;
			b[i] = 0;
		}
		// Count digit frequency of num
		while (num > 0)
		{
			a[num % 10] += 1;
			// Remove last digit
			num = num / 10;
		}
		// Count digit frequency of power value
		while (power > 0)
		{
			b[power % 10]++;
			// Remove last digit
			power = power / 10;
		}
		// Compare frequency of both number
		for (i = 0; i < 10; ++i)
		{
			if (a[i] != b[i])
			{
				// When frequency are not same
				return 0;
			}
		}
		return 1;
	}
	public void isPowerof2(int num)
	{
		int result = 0;
		Console.Write("\n Given num : " + num);
		if (num > 0)
		{
			// Check all power of 2 in 32 bit integer
			for (int i = 0; i < 31 && result == 0; ++i)
			{
				if (num == (1 << i) || this.isSameDigit(num, 1 << i) == 1)
				{
					// Get resultant power
					result = (1 << i);
				}
			}
		}
		if (result != 0)
		{
			Console.Write("\n Permutation " + result + " is power of 2\n");
		}
		else
		{
			Console.Write("\n No permutation of number " + num + " is power of 2\n");
		}
	}
	public static void Main(String[] args)
	{
		PermutationPower task = new PermutationPower();
		// Test cases
		task.isPowerof2(76328);
		task.isPowerof2(1234);
		task.isPowerof2(8240);
		task.isPowerof2(23);
		task.isPowerof2(21);
	}
}

input

 Given num : 76328
 Permutation 32768 is power of 2

 Given num : 1234
 No permutation of number 1234 is power of 2

 Given num : 8240
 Permutation 2048 is power of 2

 Given num : 23
 Permutation 32 is power of 2

 Given num : 21
 No permutation of number 21 is power of 2
<?php
// Php program for
// Check if permutation of number is power of 2 or not
class PermutationPower
{
	// Check the both number have frequency is same or not
	public	function isSameDigit($num, $power)
	{
		// Use to count number digit frequency
		// Digit [0 - 9]
		// Set the initial frequency
		$a = array_fill(0, 10, 0);
		$b = array_fill(0, 10, 0);
		// Loop controlling variable
		$i = 0;
		// Count digit frequency of num
		while ($num > 0)
		{
			$a[$num % 10] += 1;
			// Remove last digit
			$num = (int)($num / 10);
		}
		// Count digit frequency of power value
		while ($power > 0)
		{
			$b[$power % 10]++;
			// Remove last digit
			$power = (int)($power / 10);
		}
		// Compare frequency of both number
		for ($i = 0; $i < 10; ++$i)
		{
			if ($a[$i] != $b[$i])
			{
				// When frequency are not same
				return 0;
			}
		}
		return 1;
	}
	public	function isPowerof2($num)
	{
		$result = 0;
		echo("\n Given num : ".$num);
		if ($num > 0)
		{
			// Check all power of 2 in 32 bit integer
			for ($i = 0; $i < 31 && $result == 0; ++$i)
			{
				if ($num == (1 << $i) || $this->isSameDigit($num, 1 << $i) == 1)
				{
					// Get resultant power
					$result = (1 << $i);
				}
			}
		}
		if ($result != 0)
		{
			echo("\n Permutation ".$result.
				" is power of 2\n");
		}
		else
		{
			echo("\n No permutation of number ".$num.
				" is power of 2\n");
		}
	}
}

function main()
{
	$task = new PermutationPower();
	// Test cases
	$task->isPowerof2(76328);
	$task->isPowerof2(1234);
	$task->isPowerof2(8240);
	$task->isPowerof2(23);
	$task->isPowerof2(21);
}
main();

input

 Given num : 76328
 Permutation 32768 is power of 2

 Given num : 1234
 No permutation of number 1234 is power of 2

 Given num : 8240
 Permutation 2048 is power of 2

 Given num : 23
 Permutation 32 is power of 2

 Given num : 21
 No permutation of number 21 is power of 2
// Node JS program for
// Check if permutation of number is power of 2 or not
class PermutationPower
{
	// Check the both number have frequency is same or not
	isSameDigit(num, power)
	{
		// Use to count number digit frequency
		// Digit [0 - 9]
		// Set the initial frequency
		var a = Array(10).fill(0);
		var b = Array(10).fill(0);
		// Loop controlling variable
		var i = 0;
		// Count digit frequency of num
		while (num > 0)
		{
			a[num % 10] += 1;
			// Remove last digit
			num = parseInt(num / 10);
		}
		// Count digit frequency of power value
		while (power > 0)
		{
			b[power % 10]++;
			// Remove last digit
			power = parseInt(power / 10);
		}
		// Compare frequency of both number
		for (i = 0; i < 10; ++i)
		{
			if (a[i] != b[i])
			{
				// When frequency are not same
				return 0;
			}
		}
		return 1;
	}
	isPowerof2(num)
	{
		var result = 0;
		process.stdout.write("\n Given num : " + num);
		if (num > 0)
		{
			// Check all power of 2 in 32 bit integer
			for (var i = 0; i < 31 && result == 0; ++i)
			{
				if (num == (1 << i) || this.isSameDigit(num, 1 << i) == 1)
				{
					// Get resultant power
					result = (1 << i);
				}
			}
		}
		if (result != 0)
		{
			process.stdout.write("\n Permutation " + result + " is power of 2\n");
		}
		else
		{
			process.stdout.write("\n No permutation of number " + num + " is power of 2\n");
		}
	}
}

function main()
{
	var task = new PermutationPower();
	// Test cases
	task.isPowerof2(76328);
	task.isPowerof2(1234);
	task.isPowerof2(8240);
	task.isPowerof2(23);
	task.isPowerof2(21);
}
main();

input

 Given num : 76328
 Permutation 32768 is power of 2

 Given num : 1234
 No permutation of number 1234 is power of 2

 Given num : 8240
 Permutation 2048 is power of 2

 Given num : 23
 Permutation 32 is power of 2

 Given num : 21
 No permutation of number 21 is power of 2
#  Python 3 program for
#  Check if permutation of number is power of 2 or not
class PermutationPower :
	#  Check the both number have frequency is same or not
	def isSameDigit(self, num, power) :
		#  Use to count number digit frequency
		#  Digit [0 - 9]
		#  Set the initial frequency
		a = [0] * (10)
		b = [0] * (10)
		#  Loop controlling variable
		i = 0
		#  Count digit frequency of num
		while (num > 0) :
			a[num % 10] += 1
			#  Remove last digit
			num = int(num / 10)
		
		#  Count digit frequency of power value
		while (power > 0) :
			b[power % 10] += 1
			#  Remove last digit
			power = int(power / 10)
		
		#  Compare frequency of both number
		i = 0
		while (i < 10) :
			if (a[i] != b[i]) :
				#  When frequency are not same
				return 0
			
			i += 1
		
		return 1
	
	def isPowerof2(self, num) :
		result = 0
		print("\n Given num : ", num, end = "")
		if (num > 0) :
			#  Check all power of 2 in 32 bit integer
			i = 0
			while (i < 31 and result == 0) :
				if (num == (1 << i) or self.isSameDigit(num, 1 << i) == 1) :
					#  Get resultant power
					result = (1 << i)
				
				i += 1
			
		
		if (result != 0) :
			print("\n Permutation", result ,"is power of 2")
		else :
			print("\n No permutation of number", num ,"is power of 2")
		
	

def main() :
	task = PermutationPower()
	#  Test cases
	task.isPowerof2(76328)
	task.isPowerof2(1234)
	task.isPowerof2(8240)
	task.isPowerof2(23)
	task.isPowerof2(21)

if __name__ == "__main__": main()

input

 Given num :  76328
 Permutation 32768 is power of 2

 Given num :  1234
 No permutation of number 1234 is power of 2

 Given num :  8240
 Permutation 2048 is power of 2

 Given num :  23
 Permutation 32 is power of 2

 Given num :  21
 No permutation of number 21 is power of 2
#  Ruby program for
#  Check if permutation of number is power of 2 or not
class PermutationPower 
	#  Check the both number have frequency is same or not
	def isSameDigit(num, power) 
		#  Use to count number digit frequency
		#  Digit [0 - 9]
		#  Set the initial frequency
		a = Array.new(10) {0}
		b = Array.new(10) {0}
		#  Loop controlling variable
		i = 0
		#  Count digit frequency of num
		while (num > 0) 
			a[num % 10] += 1
			#  Remove last digit
			num = num / 10
		end

		#  Count digit frequency of power value
		while (power > 0) 
			b[power % 10] += 1
			#  Remove last digit
			power = power / 10
		end

		#  Compare frequency of both number
		i = 0
		while (i < 10) 
			if (a[i] != b[i]) 
				#  When frequency are not same
				return 0
			end

			i += 1
		end

		return 1
	end

	def isPowerof2(num) 
		result = 0
		print("\n Given num : ", num)
		if (num > 0) 
			#  Check all power of 2 in 32 bit integer
			i = 0
			while (i < 31 && result == 0) 
				if (num == (1 << i) || self.isSameDigit(num, 1 << i) == 1) 
					#  Get resultant power
					result = (1 << i)
				end

				i += 1
			end

		end

		if (result != 0) 
			print("\n Permutation ", result ," is power of 2\n")
		else 
			print("\n No permutation of number ", num ," is power of 2\n")
		end

	end

end

def main() 
	task = PermutationPower.new()
	#  Test cases
	task.isPowerof2(76328)
	task.isPowerof2(1234)
	task.isPowerof2(8240)
	task.isPowerof2(23)
	task.isPowerof2(21)
end

main()

input

 Given num : 76328
 Permutation 32768 is power of 2

 Given num : 1234
 No permutation of number 1234 is power of 2

 Given num : 8240
 Permutation 2048 is power of 2

 Given num : 23
 Permutation 32 is power of 2

 Given num : 21
 No permutation of number 21 is power of 2
// Scala program for
// Check if permutation of number is power of 2 or not
class PermutationPower()
{
	// Check the both number have frequency is same or not
	def isSameDigit(n: Int, p: Int): Int = {
      	var num = n;
      	var power = p;
		// Use to count number digit frequency
		// Digit [0 - 9]
		// Set the initial frequency
		var a: Array[Int] = Array.fill[Int](10)(0);
		var b: Array[Int] = Array.fill[Int](10)(0);
		// Loop controlling variable
		var i: Int = 0;
		// Count digit frequency of num
		while (num > 0)
		{
			a(num % 10) += 1;
			// Remove last digit
			num = num / 10;
		}
		// Count digit frequency of power value
		while (power > 0)
		{
			b(power % 10) += 1;
			// Remove last digit
			power = power / 10;
		}
		// Compare frequency of both number
		while (i < 10)
		{
			if (a(i) != b(i))
			{
				// When frequency are not same
				return 0;
			}
			i += 1;
		}
		return 1;
	}
	def isPowerof2(num: Int): Unit = {
		var result: Int = 0;
		print("\n Given num : " + num);
		if (num > 0)
		{
			// Check all power of 2 in 32 bit integer
			var i: Int = 0;
			while (i < 31 && result == 0)
			{
				if (num == (1 << i) || isSameDigit(num, 1 << i) == 1)
				{
					// Get resultant power
					result = (1 << i);
				}
				i += 1;
			}
		}
		if (result != 0)
		{
			print("\n Permutation " + result + " is power of 2\n");
		}
		else
		{
			print("\n No permutation of number " + num + " is power of 2\n");
		}
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var task: PermutationPower = new PermutationPower();
		// Test cases
		task.isPowerof2(76328);
		task.isPowerof2(1234);
		task.isPowerof2(8240);
		task.isPowerof2(23);
		task.isPowerof2(21);
	}
}

input

 Given num : 76328
 Permutation 32768 is power of 2

 Given num : 1234
 No permutation of number 1234 is power of 2

 Given num : 8240
 Permutation 2048 is power of 2

 Given num : 23
 Permutation 32 is power of 2

 Given num : 21
 No permutation of number 21 is power of 2
// Swift 4 program for
// Check if permutation of number is power of 2 or not
class PermutationPower
{
	// Check the both number have frequency is same or not
	func isSameDigit(_ n: Int, _ p: Int) -> Int
	{
      	var num = n;
      	var power = p;
		// Use to count number digit frequency
		// Digit [0 - 9]
		// Set the initial frequency
		var a: [Int] = Array(repeating: 0, count: 10);
		var b: [Int] = Array(repeating: 0, count: 10);
		// Loop controlling variable
		var i: Int = 0;
		// Count digit frequency of num
		while (num > 0)
		{
			a[num % 10] += 1;
			// Remove last digit
			num = num / 10;
		}
		// Count digit frequency of power value
		while (power > 0)
		{
			b[power % 10] += 1;
			// Remove last digit
			power = power / 10;
		}
		// Compare frequency of both number
		i = 0;
		while (i < 10)
		{
			if (a[i] != b[i])
			{
				// When frequency are not same
				return 0;
			}
			i += 1;
		}
		return 1;
	}
	func isPowerof2(_ num: Int)
	{
		var result: Int = 0;
		print("\n Given num : ", num, terminator: "");
		if (num > 0)
		{
			// Check all power of 2 in 32 bit integer
			var i: Int = 0;
			while (i < 31 && result == 0)
			{
				if (num == (1 << i) || self.isSameDigit(num, 1 << i) == 1)
				{
					// Get resultant power
					result = (1 << i);
				}
				i += 1;
			}
		}
		if (result != 0)
		{
			print("\n Permutation ", result ," is power of 2");
		}
		else
		{
			print("\n No permutation of number ", num ," is power of 2");
		}
	}
}
func main()
{
	let task: PermutationPower = PermutationPower();
	// Test cases
	task.isPowerof2(76328);
	task.isPowerof2(1234);
	task.isPowerof2(8240);
	task.isPowerof2(23);
	task.isPowerof2(21);
}
main();

input

 Given num :  76328
 Permutation  32768  is power of 2

 Given num :  1234
 No permutation of number  1234  is power of 2

 Given num :  8240
 Permutation  2048  is power of 2

 Given num :  23
 Permutation  32  is power of 2

 Given num :  21
 No permutation of number  21  is power of 2




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment