This notebook was prepared by Donne Martin. Source and license info is on GitHub.

See the HackerRank problem page.

See the HackerRank problem page.

See the HackerRank problem page.

Refer to the Solution Notebook. If you are stuck and need a hint, the solution notebook's algorithm discussion might be a good place to start.

In [ ]:

```
class Solution(object):
def calc_utopian_tree_height(self, cycles):
# TODO: Implement me
pass
```

**The following unit test is expected to fail until you solve the challenge.**

In [ ]:

```
# %load test_utopian_tree.py
import unittest
class TestUtopianTree(unittest.TestCase):
def test_utopian_tree(self):
solution = Solution()
self.assertEqual(solution.calc_utopian_tree_height(0), 1)
self.assertEqual(solution.calc_utopian_tree_height(1), 2)
self.assertEqual(solution.calc_utopian_tree_height(4), 7)
print('Success: test_utopian_tree')
def main():
test = TestUtopianTree()
test.test_utopian_tree()
if __name__ == '__main__':
main()
```

Review the Solution Notebook for a discussion on algorithms and code solutions.