Skip to content
Related Articles

Related Articles

Improve Article
Program to find first N Iccanobif Numbers
  • Difficulty Level : Basic
  • Last Updated : 10 May, 2021

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.

 

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 <bits/stdc++.h>
 
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




<?php
// PHP program to find first N
// Icanobif numbers
 
// Iterative function to reverse
// digits of num
function reversDigits($num)
{
    $rev_num = 0;
 
    while ($num > 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.
?>

Javascript




<script>
 
    // Javascript program to find first
    // N Icanobif numbers
     
    // Iterative function to
    // reverse digits of num
    function reversDigits(num)
    {
        let rev_num = 0;
        
        while (num > 0) {
            rev_num = rev_num * 10 + num % 10;
            num = parseInt(num / 10, 10);
        }
        
        return rev_num;
    }
        
    // Function to print first
    // N Icanobif Numbers
    function icanobifNumbers(N)
    {
        // Initialize first, second numbers
        let first = 0, second = 1;
        
        if (N == 1)
            document.write(first);
        else if (N == 2)
             document.write(first + " " + second);
        else {
            // Print first two numbers
            document.write(first + " " + second + " ");
        
            for (let i = 3; i <= N; i++) {
        
                // Reversing digit of previous
                // two terms and adding them
                let x = reversDigits(first);
                let y = reversDigits(second);
        
                  document.write(x + y + " ");
        
                let temp = second;
                second = x + y;
                first = temp;
            }
        }
    }
     
    let N = 12;
        
      icanobifNumbers(N);
     
</script>
Output: 
0 1 1 2 3 5 8 13 39 124 514 836

 

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

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.




My Personal Notes arrow_drop_up
Recommended Articles
Page :