Editorial for TOWER - Xếp hộp


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Ta có công thức như sau: ~1+2+3+...+n=\frac{(n*(n+1))}{2}~

Giả sử tồn tại một số nguyên dương ~x~ sao cho ~\frac{x*(x+1)}{2} = n~

Subtask 1 (50% số test): ~N≤10^9~

Ta có: ~x∗(x+1) = 2∗n~ ~⇒x< \sqrt{2∗n}~

Vì vậy ta chỉ cần thử hết tất cả các số nguyên dương ~x~ thoả điểu kiện trên

Độ phức tạp ~O(\sqrt{N})~

Subtask 2 (50% số test): ~N≤10^{18}~

Ta có: ~x∗(x+1) = 2∗n~

~x^2 < x∗(x+1) < (x+1)^2~ ~⇒x<\sqrt{2∗n}<(x+1)~

Nhận thấy nếu tồn tại một số ~x~ thoả mãn điều kiện thì ~x = \lfloor\sqrt{2*n}\rfloor~

Độ phức tạp: ~O(1)~


Comments

Please read the guidelines before commenting.


There are no comments at the moment.