Given a number N, the task is to print the sequence up to N. The sequence is 1, 2, 4, 8, 16, 22, 26, 38, 62, 74, 102, 104, 108, 116, 122, 126, 138, 162, and so on… This sequence is known as Digit – Product – Sequence. In this series, we take every non-zero digit of the number, multiply them and add the product to the number itself.
Examples:
Input : N = 10 Output :1 2 4 8 16 22 26 38 62 74 Input : N = 7 Output :1 2 4 8 16 22 26
Explanation:
1 + (1 * 1) = 1 + 1 = 2 2 + (2 * 1) = 2 + 2 = 4 4 + (4 * 1) = 4 + 4 = 8 8 + (8 * 1) = 8 + 8 = 16 16 + (1 * 6) = 16 + 6 = 22 22 + (2 * 2) = 22 + 4 = 26 26 + (2 * 6) = 26 + 12 = 38 38 + (3 * 8) = 38 + 24 = 62 62 + (6 * 2) = 62 + 12 = 74 and so on...
Implementation:
C++
// CPP program for Digit Product Sequence #include <bits/stdc++.h> using namespace std;
// function to produce and print Digit // Product Sequence void digit_product_Sum( int N)
{ // Array which store sequence
int a[N];
// Temporary variable to store product
int product = 1;
// Initialize first element of the
// array with 1
a[0] = 1;
// Run a loop from 1 to N. Check if
// previous number is single digit or
// not. If yes then product = 1 else
// take modulus. Then again check if
// previous number is single digit or
// not if yes then store previous number,
// else store its first value Then for
// every i store value in the array.
for ( int i = 1; i <= N; i++) {
product = a[i - 1] / 10;
if (product == 0)
product = 1;
else
product = a[i - 1] % 10;
int val = a[i - 1] / 10;
if (val == 0)
val = a[i - 1];
a[i] = a[i - 1] + (val * product);
}
// Print sequence
for ( int i = 0; i < N; i++)
cout << a[i] << " " ;
} // Driver Code int main()
{ // Value of N
int N = 10;
// Calling function
digit_product_Sum(N);
return 0;
} |
Java
// Java program for Digit Product Sequence // function to produce and print Digit // Product Sequence import java.lang.*;
import java.io.*;
class GFG
{ public static void digit_product_Sum( int N)
{
// Array which store sequence
int a[] = new int [N+ 1 ] ;
// Temporary variable to store product
int product = 1 ;
// Initialize first element of the
// array with 1
a[ 0 ] = 1 ;
// Run a loop from 1 to N. Check if
// previous number is single digit or
// not. If yes then product = 1 else
// take modulus. Then again check if
// previous number is single digit or
// not if yes then store previous number,
// else store its first value Then for
// every i store value in the array.
for ( int i = 1 ; i <= N; i++)
{
product = a[i - 1 ] / 10 ;
if (product == 0 )
product = 1 ;
else
product = a[i - 1 ] % 10 ;
int val = a[i - 1 ] / 10 ;
if (val == 0 )
val = a[i - 1 ];
a[i] = a[i - 1 ] + (val * product);
}
// Print sequence
for ( int i = 0 ; i < N; i++)
System.out.print(a[i] + " " );
}
// Driver Code public static void main(String[] args)
{
// Value of N
int N = 10 ;
// Calling function
digit_product_Sum(N);
}
} // Code contributed by Mohit Gupta_OMG <(0_o)> |
Python3
# Python3 program for # Digit Product Sequence # function to produce and # print Digit Product Sequence def digit_product_Sum(N):
# Array which store sequence
a = [ 0 ] * (N + 1 );
# Temporary variable
# to store product
product = 1 ;
# Initialize first element
# of the array with 1
a[ 0 ] = 1 ;
# Run a loop from 1 to N.
# Check if previous number
# is single digit or not.
# If yes then product = 1
# else take modulus. Then
# again check if previous
# number is single digit or
# not if yes then store
# previous number, else store
# its first value Then for
# every i store value in
# the array.
for i in range ( 1 , N + 1 ):
product = int (a[i - 1 ] / 10 );
if (product = = 0 ):
product = 1 ;
else :
product = a[i - 1 ] % 10 ;
val = int (a[i - 1 ] / 10 );
if (val = = 0 ):
val = a[i - 1 ];
a[i] = a[i - 1 ] + (val * product);
# Print sequence
for i in range (N):
print (a[i], end = " " );
# Driver Code # Value of N N = 10 ;
# Calling function digit_product_Sum(N); # This Code is contributed # by mits. |
C#
// C# program for Digit Product Sequence // function to produce and print Digit // Product Sequence using System;
class GFG
{ public static void digit_product_Sum( int N)
{
// Array which store sequence
int []a = new int [N + 1] ;
// Temporary variable to store product
int product = 1;
// Initialize first element of the
// array with 1
a[0] = 1;
// Run a loop from 1 to N. Check if
// previous number is single digit or
// not. If yes then product = 1 else
// take modulus. Then again check if
// previous number is single digit or
// not if yes then store previous number,
// else store its first value Then for
// every i store value in the array.
for ( int i = 1; i <= N; i++)
{
product = a[i - 1] / 10;
if (product == 0)
product = 1;
else
product = a[i - 1] % 10;
int val = a[i - 1] / 10;
if (val == 0)
val = a[i - 1];
a[i] = a[i - 1] + (val * product);
}
// Print sequence
for ( int i = 0; i < N; i++)
Console.Write(a[i] + " " );
}
// Driver Code
public static void Main()
{
// Value of N
int N = 10;
// Calling function
digit_product_Sum(N);
}
} // This Code is contributed by vt_m. |
PHP
<?php // PHP program for Digit // Product Sequence // function to produce // and print Digit // Product Sequence function digit_product_Sum( $N )
{ // Array which
// store sequence
$a = array_fill (0, $N , 0);
// Temporary variable
// to store product
$product = 1;
// Initialize first
// element of the
// array with 1
$a [0] = 1;
// Run a loop from 1 to
// N. Check if previous
// number is single digit
// or not. If yes then
// product = 1 else take
// modulus. Then again check
// if previous number is single
// digit or not if yes then
// store previous number,
// else store its first value
// Then for every i store value
// in the array.
for ( $i = 1; $i <= $N ; $i ++)
{
$product = (int)( $a [ $i - 1] / 10);
if ( $product == 0)
$product = 1;
else
$product = $a [ $i - 1] % 10;
$val = (int)( $a [ $i - 1] / 10);
if ( $val == 0)
$val = $a [ $i - 1];
$a [ $i ] = $a [ $i - 1] +
( $val * $product );
}
// Print sequence
for ( $i = 0; $i < $N ; $i ++)
echo $a [ $i ]. " " ;
} // Driver Code // Value of N $N = 10;
// Calling function digit_product_Sum( $N );
// This Code is contributed // by mits. ?> |
Javascript
<script> // JavaScript program for Digit
// Product Sequence
// function to produce and print Digit
// Product Sequence
function digit_product_Sum(N) {
// Array which store sequence
var a = [...Array(N)];
// Temporary variable to store product
var product = 1;
// Initialize first element of the
// array with 1
a[0] = 1;
// Run a loop from 1 to N. Check if
// previous number is single digit or
// not. If yes then product = 1 else
// take modulus. Then again check if
// previous number is single digit or
// not if yes then store previous number,
// else store its first value Then for
// every i store value in the array.
for ( var i = 1; i <= N; i++)
{
product = parseInt(a[i - 1] / 10);
if (product == 0) product = 1;
else product = a[i - 1] % 10;
var val = parseInt(a[i - 1] / 10);
if (val == 0) val = a[i - 1];
a[i] = a[i - 1] + val * product;
}
// Print sequence
for ( var i = 0; i < N; i++)
document.write(a[i] + " " );
}
// Driver Code
// Value of N
var N = 10;
// Calling function
digit_product_Sum(N);
</script> |
Output
1 2 4 8 16 22 26 38 62 74
Time Complexity: O(N)
Auxiliary Space: O(N)