Sort by

recency

|

2021 Discussions

|

  • + 0 comments

    //JAVA15: import java.io.*;

    class Result {

    public static int utopianTree(int n) {
        int height = 1;
        for (int i = 1; i <= n; i++) {
            if (i % 2 == 1) {
                height *= 2;
            } else {
                height += 1;
            }
        }
        return height;
    }
    

    }

    public class Solution { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

        // Use this for local testing:
        // BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
    
        // Use this for HackerRank submission:
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
    
        int t = Integer.parseInt(bufferedReader.readLine().trim());
    
        for (int tItr = 0; tItr < t; tItr++) {
            int n = Integer.parseInt(bufferedReader.readLine().trim());
            int result = Result.utopianTree(n);
            bufferedWriter.write(String.valueOf(result));
            bufferedWriter.newLine();
        }
    
        bufferedReader.close();
        bufferedWriter.close();
    }
    

    }

  • + 0 comments

    My Python Solution:

    def utopianTree(n):
        # Write your code here
        if n == 0:
            return 1
    
        doubleCycle = n if n % 2 else n - 1
        treeLength = sum(2** (i+1) for i in range((doubleCycle//2)+1))
        
        return treeLength if n % 2 else treeLength + 1
    
  • + 0 comments

    C# Easy to Understand Solution

        public static int utopianTree(int n)
        {
            if (n == 0) return 1;
            int start = 1;
            for (int i = 1; i <= n; i++) {
                if (i % 2 == 0) start += 1;
                else start *= 2;
            }
            return start;
        }
    

    First of all, since the tree sapling starts at 1 height, then if "n" is 0 (no growth), then its height stays at 1.

    Then since it's always starts at Spring, then Summer, then Spring again, etc. We can think of it like an index. You might notice that each Spring happens at odd index, while each Summer happens at even index. This means you can just check if the index is odd or even. If it's an odd index (Spring), multiply the height by 2. If it's an even index (Summer), increment the height by 1.

  • + 0 comments

    Cleanest and Fastest soluion you will ever find here!!

    include

    using namespace std;

    int main(){ //odd -> (2 ^ (n / 2) + 2) - 2 //even -> (2 ^ (n / 2) + 1) - 1

    int t;
    cin >> t;
    
    while(t--){
        int n;
        cin >> n;
    
        if(n % 2){ //odd 
            cout << (1 << (n / 2 + 2)) - 2 << '\n';
        }
        else{ //even
            cout << (1 << (n / 2 + 1)) - 1 << '\n';
        }
    }
    
    return 0;
    

    }

  • + 0 comments

    Here is problem solution in PYthon, Java, C++, C and Javascript - https://programmingoneonone.com/hackerrank-utopian-tree-problem-solution.html