Generate all rotations of a number

23 Jun, 2022
Given an integer n, the task is to generate all the left shift numbers possible. A left shift number is a number that is generated when all the digits of the number are shifted one position to the left and the digit at the first position is shifted to the last.Examples:  
Input: n = 123 Output: 231 312Input: n = 1445 Output: 4451 4514 5144  
 
Approach:  
Assume n = 123.
Multiply n with 10 i.e. n = n * 10 = 1230.
Add the first digit to the resultant number i.e. 1230 + 1 = 1231.
Subtract (first digit) * 10k from the resultant number where k is the number of digits in the original number (in this case, k = 3).
1231 – 1000 = 231 is the left shift number of the original number.
Below is the implementation of the above approach:  
C++
Java
Python3
C#
PHP
Javascript
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std; // Function to return the count of digits of nint numberOfDigits(int n){    int cnt = 0;    while (n > 0) {        cnt++;        n /= 10;    }    return cnt;} // Function to print the left shift numbersvoid cal(int num){    int digits = numberOfDigits(num);    int powTen = pow(10, digits - 1);     for (int i = 0; i < digits - 1; i++) {         int firstDigit = num / powTen;         // Formula to calculate left shift        // from previous number        int left            = ((num * 10) + firstDigit)              - (firstDigit * powTen * 10);        cout << left << " ";         // Update the original number        num = left;    }} // Driver Codeint main(){    int num = 1445;    cal(num);    return 0;}
// Java implementation of the approachclass GFG{ // Function to return the count of digits of nstatic int numberOfDigits(int n){    int cnt = 0;    while (n > 0)    {        cnt++;        n /= 10;    }    return cnt;} // Function to print the left shift numbersstatic void cal(int num){    int digits = numberOfDigits(num);    int powTen = (int) Math.pow(10, digits - 1);     for (int i = 0; i < digits - 1; i++)    {        int firstDigit = num / powTen;         // Formula to calculate left shift        // from previous number        int left = ((num * 10) + firstDigit) -                    (firstDigit * powTen * 10);                         System.out.print(left + " ");                         // Update the original number        num = left;    }} // Driver Codepublic static void main(String[] args){    int num = 1445;    cal(num);}} // This code is contributed by// PrinciRaj1992
# Python3 implementation of the approach # function to return the count of digit of ndef numberofDigits(n):    cnt = 0    while n > 0:        cnt += 1        n //= 10    return cnt     # function to print the left shift numbersdef cal(num):    digit = numberofDigits(num)    powTen = pow(10, digit - 1)         for i in range(digit - 1):                 firstDigit = num // powTen                 # formula to calculate left shift        # from previous number        left = (num * 10 + firstDigit -               (firstDigit * powTen * 10))        print(left, end = " ")                 # Update the original number        num = left         # Driver codenum = 1445cal(num) # This code is contributed# by Mohit Kumar
// C# implementation of the approachusing System; public class GFG{     // Function to return the count of digits of nstatic int numberOfDigits(int n){    int cnt = 0;    while (n > 0) {        cnt++;        n /= 10;    }    return cnt;} // Function to print the left shift numbersstatic void cal(int num){    int digits = numberOfDigits(num);    int powTen = (int)Math.Pow(10, digits - 1);     for (int i = 0; i < digits - 1; i++) {         int firstDigit = num / powTen;         // Formula to calculate left shift        // from previous number        int left            = ((num * 10) + firstDigit)            - (firstDigit * powTen * 10);        Console.Write(left +  " ");         // Update the original number        num = left;    }} // Driver Code    static public void Main (){        int num = 1445;        cal(num);    }} // This code is contributed by akt_mit....  
<?php// PHP implementation of the approach // Function to return the count// of digits of nfunction numberOfDigits($n){    $cnt = 0;    while ($n > 0)    {        $cnt++;        $n = floor($n / 10);    }    return $cnt;} // Function to print the left shift numbersfunction cal($num){    $digits = numberOfDigits($num);    $powTen = pow(10, $digits - 1);     for ($i = 0; $i < $digits - 1; $i++)    {         $firstDigit = floor($num / $powTen);         // Formula to calculate left shift        // from previous number        $left            = (($num * 10) + $firstDigit) -               ($firstDigit * $powTen * 10);                     echo $left, " ";         // Update the original number        $num = $left;    }} // Driver Code$num = 1445;cal($num); // This code is contributed by Ryuga?>
<script>     // Javascript implementation of the approach         // Function to return the count of digits of n    function numberOfDigits(n)    {        let cnt = 0;        while (n > 0) {            cnt++;            n = parseInt(n / 10, 10);        }        return cnt;    }     // Function to print the left shift numbers    function cal(num)    {        let digits = numberOfDigits(num);        let powTen = Math.pow(10, digits - 1);         for (let i = 0; i < digits - 1; i++) {             let firstDigit = parseInt(num / powTen, 10);             // Formula to calculate left shift            // from previous number            let left = ((num * 10) + firstDigit)                - (firstDigit * powTen * 10);            document.write(left +  " ");             // Update the original number            num = left;        }    }         let num = 1445;    cal(num);     </script>
4451 4514 5144
 
Time Complexity: O(log10n)Auxiliary Space: O(1), since no extra space has been taken.
mohit kumar 29
ankthon
jit_t
princiraj1992
SUNIL PATIL 2
rameshtravel07
sachinvinod1904
rishav1329
Akamai
number-digits
rotation
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.