# Thue-Morse sequence

• Difficulty Level : Easy
• Last Updated : 05 Apr, 2021

Thueâ€“Morse sequence, or Prouhetâ€“Thueâ€“Morse sequence, is an infinite binary sequence of 0s and 1s. The sequence is obtained by starting with 0 and successively appending the Boolean complement of the sequence obtained so far.
First few steps :

Append complement of 0, we get 01
Append complement of 01, we get 0110
Append complement of 0110, we get 01101001

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.

Given a whole number n. The task is to find the nth string formed of by Thueâ€“Morse sequence i.e prefix of length 2n-1 of Thueâ€“Morse sequence.
Examples:

```Input : n = 4
Output : 01101001
We get 0, 01, 0110 and 01101001
in fourth iteration.

Input : n = 3
Output : 0110```

The idea is to initialize the output string with 0, then run a loop n – 1 times and for each iteration find the complement of the string and append it to the string.
Below is implementation of this approach:

## C++

 `// CPP Program to find nth term of Thue-Morse sequence.``#include ``using` `namespace` `std;` `// Return the complement of the binary string.``string complement(string s)``{``    ``string comps;` `    ``// finding the complement of the string.``    ``for` `(``int` `i = 0; i < s.length(); i++) {` `        ``// if character is 0, append 1``        ``if` `(s.at(i) == ``'0'``)``            ``comps += ``'1'``;` `        ``// if character is 1, append 0.``        ``else``            ``comps += ``'0'``;``    ``}` `    ``return` `comps;``}` `// Return the nth term of Thue-Morse sequence.``string nthTerm(``int` `n)``{``    ``// Initialing the string to 0``    ``string s = ``"0"``;` `    ``// Running the loop for n - 1 time.``    ``for` `(``int` `i = 1; i < n; i++)` `        ``// appending the complement of``        ``// the string to the string.``        ``s += complement(s);``    `  `    ``return` `s;``}``// Driven Program``int` `main()``{``    ``int` `n = 4;``    ``cout << nthTerm(n) << endl;``    ``return` `0;``}`

## Java

 `// Java Program to find nth``// term of Thue-Morse sequence.` `class` `GFG``{``    ``// Return the complement``    ``// of the binary String.``    ``static` `String complement(String s)``    ``{``        ``String comps = ``""``;``    ` `        ``// finding the complement``        ``// of the String.``        ``for` `(``int` `i = ``0``; i < s.length(); i++)``        ``{``    ` `            ``// if character is 0,``            ``// append 1``            ``if` `(s.charAt(i) == ``'0'``)``                ``comps += ``'1'``;``    ` `            ``// if character is 1,``            ``// append 0.``            ``else``                ``comps += ``'0'``;``        ``}``    ` `        ``return` `comps;``    ``}``    ` `    ``// Return the nth term``    ``// of Thue-Morse sequence.``    ``static` `String nthTerm(``int` `n)``    ``{``        ``// Initialing the``        ``// String to 0``        ``String s = ``"0"``;``    ` `        ``// Running the loop``        ``// for n - 1 time.``        ``for` `(``int` `i = ``1``; i < n; i++)``    ` `            ``// appending the complement of``            ``// the String to the String.``            ``s += complement(s);``        ` `    ` `        ``return` `s;``    ``}``    ` `    ``// Driven Code``public` `static` `void` `main(String[] args)``    ``{``        ``int` `n = ``4``;``        ``System.out.print(nthTerm(n));``    ``}``}` `// This code is contributed by``// mits`

## Python3

 `# Python3 Program to find nth term of``# Thue-Morse sequence.` `# Return the complement of the``# binary string.``def` `complement(s):``    ``comps ``=` `"";` `    ``# finding the complement``    ``# of the string.``    ``for` `i ``in` `range``(``len``(s)):` `        ``# if character is 0, append 1``        ``if` `(s[i] ``=``=` `'0'``):``            ``comps ``+``=` `'1'``;` `        ``# if character is 1, append 0.``        ``else``:``            ``comps ``+``=` `'0'``;` `    ``return` `comps;` `# Return the nth term of``# Thue-Morse sequence.``def` `nthTerm(n):` `    ``# Initialing the string to 0``    ``s ``=` `"0"``;` `    ``# Running the loop for n - 1 time.``    ``for` `i ``in` `range``(``1``, n):` `        ``# appending the complement of``        ``# the string to the string.``        ``s ``+``=` `complement(s);``    ` `    ``return` `s;` `# Driver Code``n ``=` `4``;``print``(nthTerm(n));` `# This code is contributed``# by mits`

## C#

 `// C# Program to find nth``// term of Thue-Morse sequence.``using` `System;` `class` `GFG``{``    ``// Return the complement``    ``// of the binary string.``    ``static` `string` `complement(``string` `s)``    ``{``        ``string` `comps = ``""``;``    ` `        ``// finding the complement``        ``// of the string.``        ``for` `(``int` `i = 0; i < s.Length; i++)``        ``{``    ` `            ``// if character is 0,``            ``// append 1``            ``if` `(s[i] == ``'0'``)``                ``comps += ``'1'``;``    ` `            ``// if character is 1,``            ``// append 0.``            ``else``                ``comps += ``'0'``;``        ``}``    ` `        ``return` `comps;``    ``}``    ` `    ``// Return the nth term``    ``// of Thue-Morse sequence.``    ``static` `string` `nthTerm(``int` `n)``    ``{``        ``// Initialing the``        ``// string to 0``        ``string` `s = ``"0"``;``    ` `        ``// Running the loop``        ``// for n - 1 time.``        ``for` `(``int` `i = 1; i < n; i++)``    ` `            ``// appending the complement of``            ``// the string to the string.``            ``s += complement(s);``        ` `    ` `        ``return` `s;``    ``}``    ` `    ``// Driven Code``    ``static` `void` `Main()``    ``{``        ``int` `n = 4;``        ``Console.Write(nthTerm(n));``    ``}``}` `// This code is contributed by``// Manish Shaw(manishshaw1)`

## PHP

 ``

## C++

 `#include ``using` `namespace` `std;` `int` `main() {` `    ``cout<<``"GFG!"``;``    ``return` `0;``}`

## Javascript

 ``

Output:

`01101001`

My Personal Notes arrow_drop_up