CSES Set Problem Weird Alogrithm Solution

Weird Algorithm

Consider an algorithm that takes as input a positive integer n . If n  is even, the algorithm divides it by two, and if n is odd, the algorithm multiplies it by three and adds one. The algorithm repeats this, until n
 is one. For example, the sequence for n=3 is as follows:

3→10→5→16→8→4→2→1

Your task is to simulate the execution of the algorithm for a given value of n

Input

The only input line contains an integer n

Output

Print a line that contains all values of n during the algorithm.

Constraints:- 

1≤n≤106

Example

Input:
3

Output:

3 10 5 16 8 4 2 1


Solution Approach:-

1.First we will take the input as an integer such as n.

2.Now take a while loop and iterates it till the value of n is not equal to 1.

3.Inside while loop:-
    i.Check if n is even then,
          a.print the value of n.
          b.update the value of n=n/2.

    ii.Check if n is odd then,
          a.print the value of n.
          b.update the value of n=3*n+1.

4.Atlast print the 1. 

Code:-

import java.util.Scanner;

public class WeiredAlgo {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
long n=sc.nextLong();
while(n!=1) {
if (n % 2 == 0) {
System.out.print(n+" ");
n = n / 2;
}
else if(n%2!=0){
System.out.print(n+" ");
n = 3 * n + 1;
}
}
System.out.print(1);
}
}










Comments