# Program to find first N Iccanobif Numbers

Given a number N. The task is to find first N Iccanobif Numbers.

Iccanobif Numbers are similar to Fibonacci Numbers. The K-th Iccanobif number can be obtained by addition of previous two numbers after reversing their digits.

The first few Iccanobif Numbers are:

0, 1, 1, 2, 3, 5, 8, 13, 39, 124, 514, 836, …..

Examples:

```Input : N = 5
Output : 0 1 1 2 3

Input : N = 9
Output : 0 1 1 2 3 5 8 13 39
Explanation: Upto 8th term, adding previous two
terms is required, as there is an only single digit.
For 9th term, adding 31(reversing 8th term)
and 8 will give 39.
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: The idea is to take the first two Iccanobif Numbers as first = 0 and second = 1. Now iterate using a demoPointer N-2 times and every time find reverse of the previous two numbers using the approach discussed in: Reversing digits of a number. Find the sum of the two reversed numbers and update the variables first and second accordingly.

Below is the implementation of above approach:

## C++

 `// C++ program to find first ` `// N Icanobif numbers ` ` `  `#include ` ` `  `using` `namespace` `std; ` ` `  `// Iterative function to ` `// reverse digits of num ` `int` `reversDigits(``int` `num) ` `{ ` `    ``int` `rev_num = 0; ` ` `  `    ``while` `(num > 0) { ` `        ``rev_num = rev_num * 10 + num % 10; ` `        ``num = num / 10; ` `    ``} ` ` `  `    ``return` `rev_num; ` `} ` ` `  `// Function to print first ` `// N Icanobif Numbers ` `void` `icanobifNumbers(``int` `N) ` `{ ` `    ``// Initialize first, second numbers ` `    ``int` `first = 0, second = 1; ` ` `  `    ``if` `(N == 1) ` `        ``cout << first; ` `    ``else` `if` `(N == 2) ` `        ``cout << first << ``" "` `<< second; ` `    ``else` `{ ` `        ``// Print first two numbers ` `        ``cout << first << ``" "` `<< second << ``" "``; ` ` `  `        ``for` `(``int` `i = 3; i <= N; i++) { ` ` `  `            ``// Reversing digit of previous ` `            ``// two terms and adding them ` `            ``int` `x = reversDigits(first); ` `            ``int` `y = reversDigits(second); ` ` `  `            ``cout << x + y << ``" "``; ` ` `  `            ``int` `temp = second; ` `            ``second = x + y; ` `            ``first = temp; ` `        ``} ` `    ``} ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` `    ``int` `N = 12; ` ` `  `    ``icanobifNumbers(N); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to find first ` `// N Icanobif numbers ` ` `  `public` `class` `GFG{ ` ` `  `    ``// Iterative function to ` `    ``// reverse digits of num ` `    ``static` `int` `reversDigits(``int` `num) ` `    ``{ ` `        ``int` `rev_num = ``0``; ` `     `  `        ``while` `(num > ``0``) { ` `            ``rev_num = rev_num * ``10` `+ num % ``10``; ` `            ``num = num / ``10``; ` `        ``} ` `     `  `        ``return` `rev_num; ` `    ``} ` `     `  `    ``// Function to print first ` `    ``// N Icanobif Numbers ` `    ``static` `void` `icanobifNumbers(``int` `N) ` `    ``{ ` `        ``// Initialize first, second numbers ` `        ``int` `first = ``0``, second = ``1``; ` `     `  `        ``if` `(N == ``1``) ` `            ``System.out.print(first); ` `        ``else` `if` `(N == ``2``) ` `             ``System.out.print(first + ``" "` `+ second); ` `        ``else` `{ ` `            ``// Print first two numbers ` `            ``System.out.print(first + ``" "` `+ second + ``" "``); ` `     `  `            ``for` `(``int` `i = ``3``; i <= N; i++) { ` `     `  `                ``// Reversing digit of previous ` `                ``// two terms and adding them ` `                ``int` `x = reversDigits(first); ` `                ``int` `y = reversDigits(second); ` `     `  `                 ``System.out.print(x + y + ``" "``); ` `     `  `                ``int` `temp = second; ` `                ``second = x + y; ` `                ``first = temp; ` `            ``} ` `        ``} ` `    ``} ` `     `  `    ``// Driver Code ` `    ``public` `static` `void` `main(String []args){ ` `        ``int` `N = ``12``; ` `     `  `        ``icanobifNumbers(N); ` `     ``} ` `     ``// This code is contributed by ANKITRAI1 ` `} `

## Python3

 `# Python 3 program to find first ` `# N Icanobif numbers ` ` `  `# Iterative function to ` `# reverse digits of num ` `def` `reversedigit(num): ` `    ``rev_num ``=` `0` `    ``while` `num > ``0``: ` `        ``rev_num ``=` `rev_num ``*` `10` `+` `num ``%` `10` `        ``num ``=` `num ``/``/` `10` `    ``return` `rev_num ` ` `  `# Function to print first ` `# N Icanobif Numbers ` `def` `icanobifNumbers(N): ` ` `  `    ``# Initialize first, second numbers ` `    ``first ``=` `0` `    ``second ``=` `1` `    ``if` `N ``=``=` `1``: ` `        ``print``(first) ` `    ``elif` `N ``=``=` `2``: ` `        ``print``(first, second) ` `    ``else``: ` ` `  `        ``# Print first two numbers ` `        ``print``(first, second, end ``=` `" "``) ` `        ``for` `i ``in` `range``(``3``, N ``+` `1``): ` ` `  `            ``# Reversing digit of previous ` `            ``# two terms and adding them ` `            ``x ``=` `reversedigit(first) ` `            ``y ``=` `reversedigit(second) ` `            ``print``(x ``+` `y, end ``=` `" "``) ` `            ``temp ``=` `second ` `            ``second ``=` `x ``+` `y ` `            ``first ``=` `temp ` ` `  `# Driver code ` `N ``=` `12` `icanobifNumbers(N) ` ` `  `# This code is contributed by Shrikant13 `

## C#

 `// C# program to find first ` `// N Icanobif numbers ` `  `  `using` `System; ` `public` `class` `GFG{ ` `  `  `    ``// Iterative function to ` `    ``// reverse digits of num ` `    ``static` `int` `reversDigits(``int` `num) ` `    ``{ ` `        ``int` `rev_num = 0; ` `      `  `        ``while` `(num > 0) { ` `            ``rev_num = rev_num * 10 + num % 10; ` `            ``num = num / 10; ` `        ``} ` `      `  `        ``return` `rev_num; ` `    ``} ` `      `  `    ``// Function to print first ` `    ``// N Icanobif Numbers ` `    ``static` `void` `icanobifNumbers(``int` `N) ` `    ``{ ` `        ``// Initialize first, second numbers ` `        ``int` `first = 0, second = 1; ` `      `  `        ``if` `(N == 1) ` `            ``Console.Write(first); ` `        ``else` `if` `(N == 2) ` `             ``Console.Write(first + ``" "` `+ second); ` `        ``else` `{ ` `            ``// Print first two numbers ` `            ``Console.Write(first + ``" "` `+ second + ``" "``); ` `      `  `            ``for` `(``int` `i = 3; i <= N; i++) { ` `      `  `                ``// Reversing digit of previous ` `                ``// two terms and adding them ` `                ``int` `x = reversDigits(first); ` `                ``int` `y = reversDigits(second); ` `      `  `                 ``Console.Write(x + y + ``" "``); ` `      `  `                ``int` `temp = second; ` `                ``second = x + y; ` `                ``first = temp; ` `            ``} ` `        ``} ` `    ``} ` `      `  `    ``// Driver Code ` `    ``public` `static` `void` `Main(){ ` `        ``int` `N = 12; ` `      `  `        ``icanobifNumbers(N); ` `     ``} ` `     `  `} `

## PHP

0)
{
\$rev_num = (\$rev_num * 10) +
(\$num % 10);
\$num = (int)( \$num / 10);
}

return \$rev_num;
}

// Function to print first
// N Icanobif Numbers
function icanobifNumbers(\$N)
{
// Initialize first, second numbers
\$first = 0;
\$second = 1;

if (\$N == 1)
echo \$first;
else if (\$N == 2)
echo \$first , ” “, \$second;
else
{
// Print first two numbers
echo \$first, ” ” , \$second, ” “;

for (\$i = 3; \$i <= \$N; \$i++) { // Reversing digit of previous // two terms and adding them \$x = reversDigits(\$first); \$y = reversDigits(\$second); echo (\$x + \$y), " "; \$temp = \$second; \$second = \$x + \$y; \$first = \$temp; } } } // Driver Code \$N = 12; icanobifNumbers(\$N); // This code is ccontributed by Tushil. ?>

Output:

```0 1 1 2 3 5 8 13 39 124 514 836
```

Note: For larger value of N, use numbers as string.

My Personal Notes arrow_drop_up