Cây chia đôi


Submit solution

Points: 3 (partial)
Time limit: 2.0s
JAVA11 3.0s
Python 3 3.0s
Memory limit: 977M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Với mỗi số nguyên dương \(n\), tạo một nút với giá trị \(n\), từ nút đó dựng cây nhị phân theo quy tắc sau:

  • Nếu giá trị của nút - \(k\) - là chẵn thì hai nút con có giá trị \(k/2\).
  • Nếu \(k\) lẻ và \(k > 1\) thì hai nút con lần lượt có giá trị \((k - 1)/2\) và \((k + 1)/2\).

Bạn hãy viết chương trình tìm chiều sâu tổng số nút của cây.

Ghi chú: Chiều sâu của cây là độ dài của đường đi dài nhất từ nút gốc tới lá.

Đầu vào

Dòng đầu tiên chứa số tự nhiên \(t\) \((1 \le t \le 10^5)\), số lượng test con.

\(t\) dòng tiếp theo, mỗi dòng chứa một số nguyên dương trong khoảng \([1, 10^9]\).

Ghi chú: các số trong các test con đã được sắp xếp theo thứ tự tăng dần.

Đầu ra

\(t\) dòng, mỗi dòng chứa hai số nguyên dương lần lượt là chiều sâu của cây và tổng số nút trong cây.

Chú ý: Kết quả có vượt quá kiểu số nguyên \(32\)bit.

Subtask

\(30\%\) số test có \(t \le 10\), các số trong khoảng \([1, 1000]\).

\(30\%\) số test có \(t \le 10\).

Ví dụ

Đầu vào:

3
7
46
100

Đầu ra:

4 13
7 91
8 199

Giải thích: Với \(n = 7\) ta có cây sau:

QDUY

Comments

There are no comments at the moment.