Consider an algorithm that takes as input a positive integer . If is even, the algorithm divides it by two, and if is odd, the algorithm multiplies it by three and adds one. The algorithm repeats this until is one. For example, the sequence for 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 .
Example:
Input: n = 3
Output: 3 10 5 16 8 4 2 1
Approach
Java
import java.util.HashSet;public class WeirdAlgorithm {public static void main(String[] args) {int n = 3;weirdAlgorith(n);}static void weirdAlgorith(int n){HashSet<Integer> st= new HashSet<Integer>();st.add(n);while (n != 1){System.out.print(n+" ");if (n%2==1)n = n * 3 + 1;elsen = n / 2;if (st.contains(n))break;st.add(n);}System.out.print(n);}}
C++
#include <bits/stdc++.h>using namespace std;void weirdAlgorith(long long n){set<long long> st;st.insert(n);while (n != 1){cout << n << " ";if (n & 1)n = n * 3 + 1;elsen = n / 2;if (st.find(n) != st.end())break;st.insert(n);}cout << n;}int main(){long long n = 3;weirdAlgorith(n);return 0;}
No comments:
Post a Comment