Given a number n, find out 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), (1, 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

2.^{n(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 = 2

^{n}

There are n^{2}– 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 = 2^{n}* 2^{(n2 – n)/2}=2^{n(n+1)/2}

## C++

`// 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

`// 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.` |

## Python3

`# 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#

`// 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` `// 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.` `?>` |

## Javascript

`<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>` |

**Output: **

64

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**