Given a number n, find out the number of Symmetric Relations on a set of first n natural numbers {1, 2, ..n}.
Examples:
Input : n = 2 Output : 8 Given set is {1, 2}. Below are all symmetric relation. {} {(1, 1)}, {(2, 2)}, {(1, 1), (2, 2)}, {(1, 2), (2, 1)} {(1, 1), (1, 2), (2, 1)}, {(2, 2), (1, 2), (2, 1)}, {(1, 1), (2, 2), (2, 1), (1, 2)} Input : n = 3 Output : 64
A Relation ‘R’ on Set A is said be Symmetric if xRy then yRx for every x, y ? A
or if (x, y) ? R, then (y, x) ? R for every x, y?A
Total number of symmetric relations is 2n(n+1)/2.
How does this formula work?
A relation R is symmetric if the value of every cell (i, j) is same as that cell (j, i). The diagonals can have any value.
There are n diagonal values, total possible combination of diagonal values = 2n
There are n2 – n non-diagonal values. We can only choose different value for half of them, because when we choose a value for cell (i, j), cell (j, i) gets same value.
So combination of non-diagonal values = 2(n2 – n)/2
Overall combination = 2n * 2(n2 – n)/2 = 2n(n+1)/2
// C++ program to count total symmetric relations // on a set of natural numbers. #include <bits/stdc++.h> // function find the square of n unsigned int countSymmetric(unsigned int n)
{ // Base case
if (n == 0)
return 1;
// Return 2^(n(n + 1)/2)
return 1 << ((n * (n + 1))/2);
} // Driver code int main()
{ unsigned int n = 3;
printf ( "%u" , countSymmetric(n));
return 0;
} |
// Java program to count total symmetric // relations on a set of natural numbers. import java.io.*;
import java.util.*;
class GFG {
// function find the square of n
static int countSymmetric( int n)
{
// Base case
if (n == 0 )
return 1 ;
// Return 2^(n(n + 1)/2)
return 1 << ((n * (n + 1 )) / 2 );
}
// Driver code
public static void main (String[] args)
{
int n = 3 ;
System.out.println(countSymmetric(n));
}
} // This code is contributed by Nikita Tiwari. |
# Python 3 program to count # total symmetric relations # on a set of natural numbers. # function find the square of n def countSymmetric(n) :
# Base case
if (n = = 0 ) :
return 1
# Return 2^(n(n + 1)/2)
return ( 1 << ((n * (n + 1 )) / / 2 ))
# Driver code n = 3
print (countSymmetric(n))
# This code is contributed # by Nikita Tiwari. |
// C# program to count total symmetric // relations on a set of natural numbers. using System;
class GFG {
// function find the square of n
static int countSymmetric( int n)
{
// Base case
if (n == 0)
return 1;
// Return 2^(n(n + 1)/2)
return 1 << ((n * (n + 1)) / 2);
}
// Driver code
public static void Main ()
{
int n = 3;
Console.WriteLine(countSymmetric(n));
}
} // This code is contributed by vt_m. |
<?php // PHP program to count total symmetric // relations on a set of natural numbers. // function find the square of n function countSymmetric( $n )
{ // Base case
if ( $n == 0)
return 1;
// Return 2^(n(n + 1)/2)
return 1 << (( $n * ( $n + 1))/2);
} // Driver code
$n = 3;
echo (countSymmetric( $n ));
// This code is contributed by vt_m. ?> |
<script> // JavaScript program to count total symmetric // relations on a set of natural numbers. // function find the square of n function countSymmetric(n)
{
// Base case
if (n == 0)
return 1;
// Return 2^(n(n + 1)/2)
return 1 << ((n * (n + 1)) / 2);
}
// Driver Code let n = 3;
document.write(countSymmetric(n));
</script> |
64