Count Odd and Even Rotations of N in C++



We are given a number N. The goal is to count the rotations of N that make an odd number and rotations that make an even number. If the number N is 123 its rotations would be 123, 321, 132. The odd rotations are 123 and 321 ( 2 ) and even rotation is 132 ( 1 ).

Let us understand with examples.

Input − N= 54762

Output

Count of rotations of N which are Odd are − 2

Count of rotations of N which are Even are − 3

Explanation − Rotations are −

54762, 25476, 62547, 76254, 47625.

Even rotations are 3 − 54762, 25476, 76254

Odd rotations are 2 − 62547, 47625

Input − N= 3571

Output 

Count of rotations of N which are Odd are − 4

Count of rotations of N which are Even are − 0

Explanation − Rotations are −

3571, 1357, 7135, 5713

Even rotations are 0 −

Odd rotations are 4 − 3571, 1357, 7135, 5713

The approach used in the below program is as follows

The number is odd or even can be checked using the unit digits as odd/even. While rotation of a number, all digits would come as unit digits. So we will divide the number by 10 and check if the unit digit is even/odd and increment respective counts.

  • Take the number as integer N.

  • Function Even_Odd_rotation(int N) takes the number N and prints the count of odd and even rotations.

  • Take the initial counts as Even_rotation and Odd_rotation.

  • Using do-while loop take value=N%10 for unit digit.

  • If value%2==0, it is even increment Even_rotation, else increment Odd_rotation

  • Reduce N by 10 for the next unit digit.

  • Print Even_rotation as rotations of N which are even.

  • Print Odd_rotation as rotations of N which are even.

Example

#include <bits/stdc++.h>
using namespace std;
void Even_Odd_rotation(int N){
   int Even_rotation = 0;
   int Odd_rotation = 0;
   do{
      int value = N % 10;
      if(value % 2 == 1)
         { Odd_rotation++; }
      else
         { Even_rotation++; }
      N = N / 10;
   } while(N != 0);
   cout<<"Count of rotations of N which are Odd are: "<<Odd_rotation;
   cout<<"\nCount of rotations of N which are Even are: "<<Even_rotation;
}
int main(){
   int N = 341;
   Even_Odd_rotation(N);
   return 0;
}

Output

If we run the above code it will generate the following output −

Count of rotations of N which are Odd are: 2
Count of rotations of N which are Even are: 1
Updated on: 2020-12-01T12:50:06+05:30

154 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements