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
Post a Comment
if you have any doubts let me know.