Form a number using corner digits of powers
Last Updated :
19 Sep, 2022
Given two integers N and X. Make a number in such a way that the number contains the first and last digit occurring in .
Examples :
Input : N = 10, X = 5
Output : 1010101010
Explanation :
10^1 = 10
10^2 = 100
10^3 = 1000
10^4 = 10000
10^5 = 100000
Take First and Last Digit of each Power to
get required number.
Input : N = 19, X = 4
Output : 19316911
Explanation :
19^1 = 19
19^2 = 361
19^3 = 6859
19^4 = 130321
Take First and Last Digit of each Power to get required number.
Recommended: Please solve it on “PRACTICE“first, before moving on to the solution.
Approach :
- Calculate all Powers of N from 1 to X one by one.
- Store the Output in power[] array.
- Store power[0] i.e, last_digit and power[power_size – 1] i.e, unit_digit from power[] array to result[] array.
- Print the result[] Array.
Below is the implementation of the above approach :
C++
#include <bits/stdc++.h>
using namespace std;
void nextPower( int N, vector< int > &power)
{
int carry = 0;
for ( int i=0 ; i < power.size(); i++)
{
int prod = (power[i] * N) + carry ;
power[i] = prod % 10 ;
carry = prod / 10 ;
}
while (carry)
{
power.push_back(carry % 10);
carry = carry / 10 ;
}
}
void printPowerNumber( int X, int N)
{
vector< int > power;
power.push_back(1);
vector< int > res;
for ( int i=1; i<=X; i++)
{
nextPower(N, power) ;
res.push_back(power.back());
res.push_back(power.front());
}
for ( int i=0 ; i < res.size(); i++)
cout << res[i] ;
}
int main()
{
int N = 19 , X = 4;
printPowerNumber(X, N);
return 0 ;
}
|
Java
import java.io.*;
import java.util.*;
public class GFG {
static List<Integer> power = new ArrayList<Integer>();
static void nextPower(Integer N)
{
Integer carry = 0 ;
for ( int i = 0 ; i < power.size(); i++)
{
Integer prod = (power.get(i) * N) + carry ;
power.set(i,prod % 10 );
carry = prod / 10 ;
}
while (carry >= 1 )
{
power.add(carry % 10 );
carry = carry / 10 ;
}
}
static void printPowerNumber( int X, int N)
{
power.add( 1 );
List<Integer> res = new ArrayList<Integer>();
for ( int i = 1 ; i <= X; i++)
{
nextPower(N) ;
res.add(power.get(power.size() - 1 ));
res.add(power.get( 0 ));
}
for ( int i = 0 ; i < res.size(); i++)
System.out.print(res.get(i)) ;
}
public static void main(String args[])
{
Integer N = 19 , X = 4 ;
printPowerNumber(X, N);
}
}
|
Python3
power = []
def nextPower(N) :
global power
carry = 0
for i in range ( 0 , len (power)) :
prod = (power[i] * N) + carry
power[i] = prod % 10
carry = ( int )(prod / 10 )
while (carry) :
power.append(carry % 10 )
carry = ( int )(carry / 10 )
def printPowerNumber(X, N) :
global power
power.append( 1 )
res = []
for i in range ( 1 , X + 1 ) :
nextPower(N)
res.append(power[ - 1 ])
res.append(power[ 0 ])
for i in range ( 0 , len (res)) :
print (res[i], end = "")
N = 19
X = 4
printPowerNumber(X, N)
|
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections;
class GFG {
static void nextPower( int N, ref List< int > power)
{
int carry = 0;
for ( int i = 0; i < power.Count; i++)
{
int prod = (power[i] * N) + carry ;
power[i] = prod % 10 ;
carry = prod / 10 ;
}
while (carry >= 1)
{
power.Add(carry % 10);
carry = carry / 10 ;
}
}
static void printPowerNumber( int X, int N)
{
List< int > power = new List< int >();
power.Add(1);
List< int > res = new List< int >();
for ( int i = 1; i <= X; i++)
{
nextPower(N, ref power) ;
res.Add(power.Last());
res.Add(power.First());
}
for ( int i = 0 ; i < res.Count; i++)
Console.Write(res[i]) ;
}
public static void Main()
{
int N = 19 , X = 4;
printPowerNumber(X, N);
}
}
|
PHP
<?php
function nextPower( $N , & $power )
{
$carry = 0;
for ( $i = 0 ; $i < count ( $power ); $i ++)
{
$prod = ( $power [ $i ] *
$N ) + $carry ;
$power [ $i ] = $prod % 10 ;
$carry = (int)( $prod / 10) ;
}
while ( $carry )
{
array_push ( $power , $carry % 10);
$carry = (int)( $carry / 10) ;
}
}
function printPowerNumber( $X , $N )
{
$power = array ();
array_push ( $power , 1);
$res = array ();
for ( $i = 1; $i <= $X ; $i ++)
{
nextPower( $N , $power ) ;
array_push ( $res ,
$power [ count ( $power ) - 1]);
array_push ( $res , $power [0]);
}
for ( $i = 0 ; $i < count ( $res ); $i ++)
echo ( $res [ $i ]) ;
}
$N = 19; $X = 4;
printPowerNumber( $X , $N );
?>
|
Javascript
<script>
function nextPower(N, power)
{
var carry = 0;
for ( var i=0 ; i < power.length; i++)
{
var prod = (power[i] * N) + carry ;
power[i] = prod % 10 ;
carry = parseInt(prod / 10);
}
while (carry>=1)
{
power.push(carry % 10);
carry = parseInt(carry / 10);
}
return power;
}
function printPowerNumber( X, N)
{
var power = [];
power.push(1);
var res = [];
for ( var i=1; i<=X; i++)
{
power = nextPower(N, power) ;
res.push(power[power.length-1]);
res.push(power[0]);
}
for ( var i=0 ; i < res.length; i++)
document.write( res[i] );
}
var N = 19 , X = 4;
printPowerNumber(X, N);
</script>
|
Time Complexity: O(XlogX)
Auxiliary Space: O(N)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...