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.

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<Integerstnew HashSet<Integer>();
            st.add(n);
            while (n != 1)
            {
                System.out.print(n+" ");
                if (n%2==1)
                    n = n * 3 + 1;
                else
                    n = 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 longst;
    st.insert(n);
    while (n != 1)
    {
        cout << n << " ";
        if (n & 1)
            n = n * 3 + 1;
        else
            n = 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