Dado um número N, a tarefa é encontrar o enésimo termo da série: 
 

1, 2, 11, 12, 21 ... 
 

Exemplos: 
 

Input : N = 2
Output : 2

Input : N = 5
Output : 21

Abordagem: 
A ideia é baseada no fato de que o valor do último dígito se alterna na série. Por exemplo, se o último dígito do iº número for 1, então o último dígito do (i-1) th e (i + 1) th números deve ser 2.
Portanto, crie uma array de tamanho (n + 1) e pressione 1 e 2 (esses dois são sempre os dois primeiros elementos da série) a ele.
 

Portanto, o iº termo da array é: 
1) Se i for ímpar, 
arr [i] = arr [i / 2] * 10 + 1; 
2) Se i for par, 
arr [i] = arr [(i / 2) -1] * 10 + 2; 
 

No último retorno arr [n].
Abaixo está a implementação da ideia acima:
 

// C++ program to find
// the N-th term in the series
// 1, 2, 11, 12, 21...
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find N-th number in series
int printNthElement(int N)
{
    // create an array of size (N+1)
    int arr[N + 1];
    arr[1] = 1;
    arr[2] = 2;
 
    for (int i = 3; i <= N; i++) {
        // If i is odd
        if (i % 2 != 0) {
 
            arr[i] = arr[i / 2] * 10 + 1;
        }
        else {
 
            arr[i] = arr[(i / 2) - 1] * 10 + 2;
        }
    }
    return arr[N];
}
 
// Driver code
int main()
{
 
    // Get N
    int N = 5;
 
    // Get Nth term
    cout << printNthElement(N);
 
    return 0;
}
// Java program to find
// the N-th term in the series
// 1, 2, 11, 12, 21...
 
class FindNth {
 
    // Function to find n-th number in series
    static int printNthElement(int n)
    {
        // create an array of size (n+1)
        int arr[] = new int[n + 1];
        arr[1] = 1;
        arr[2] = 2;
 
        for (int i = 3; i <= n; i++) {
            // If i is odd
            if (i % 2 != 0)
                arr[i] = arr[i / 2] * 10 + 1;
            else
                arr[i] = arr[(i / 2) - 1] * 10 + 2;
        }
        return arr[n];
    }
 
    // main function
    public static void main(String[] args)
    {
        int n = 5;
 
        System.out.println(printNthElement(n));
    }
}
# Python3 program to find
# the N-th term in the series
# 1, 2, 11, 12, 21...
 
# Return n-th number in series
def printNthElement(n) : 
         
    # create an array of size (n + 1) 
    arr =[0] * (n + 1); 
    arr[1] = 1
    arr[2] = 2
     
    for i in range(3, n + 1) : 
        # If i is odd 
        if (i % 2 != 0) : 
            arr[i] = arr[i // 2] * 10 + 1
        else : 
            arr[i] = arr[(i // 2) - 1] * 10 + 2
         
    return arr[n] 
         
# Driver code 
n = 5
print(printNthElement(n)) 
// C# program to find
// the N-th term in the series
// 1, 2, 11, 12, 21...
using System;
 
class GFG
{
 
// Function to find n-th
// number in series
static int printNthElement(int n)
{
    // create an array of size (n+1)
    int []arr = new int[n + 1];
    arr[1] = 1;
    arr[2] = 2;
 
    for (int i = 3; i <= n; i++)
    {
        // If i is odd
        if (i % 2 != 0)
            arr[i] = arr[i / 2] * 10 + 1;
        else
            arr[i] = arr[(i / 2) - 1] * 10 + 2;
    }
    return arr[n];
}
 
// Driver Code
public static void Main()
{
    int n = 5;
 
    Console.WriteLine(printNthElement(n));
}
}
 
// This code is contributed
// by inder_verma
<?php
// PHP program to find
// the N-th term in the series
// 1, 2, 11, 12, 21...
 
// Function to find N-th
// number in series
function printNthElement($N)
{
    // create an array of size (N+1)
    $arr = array($N + 1);
    $arr[1] = 1;
    $arr[2] = 2;
 
    for ( $i = 3; $i <= $N; $i++)
    {
        // If i is odd
        if ($i % 2 != 0)
        {
 
            $arr[$i] = $arr[$i / 2] *
                            10 + 1;
        }
        else
        {
 
            $arr[$i] = $arr[($i / 2) - 1] *    
                                  10 + 2;
        }
    }
    return $arr[$N];
}
 
// Driver code
$N = 5;
 
// Get Nth term
echo printNthElement($N);
 
// This code is contributed
// by Mahadev99
?>
<script>
    // Javascript program to find
    // the N-th term in the series
    // 1, 2, 11, 12, 21...
     
    // Function to find n-th number in series
    function printNthElement(n)
    {
        // create an array of size (n+1)
        let arr = new Array(n + 1);
        arr[1] = 1;
        arr[2] = 2;
   
        for (let i = 3; i <= n; i++) {
            // If i is odd
            if (i % 2 != 0)
                arr[i] = arr[parseInt(i / 2, 10)] * 10 + 1;
            else
                arr[i] = arr[parseInt(i / 2, 10) - 1] * 10 + 2;
        }
        return arr[n];
    }
     
    let n = 5;
   
      document.write(printNthElement(n));
 
// This code is contributed by vaibhavrabadiya117.
</script>
Saída: 
21