//你总共有 n 枚硬币，你需要将它们摆成一个阶梯形状，第 k 行就必须正好有 k 枚硬币。 
//
// 给定一个数字 n，找出可形成完整阶梯行的总行数。 
//
// n 是一个非负整数，并且在32位有符号整型的范围内。 
//
// 示例 1: 
//
// 
//n = 5
//
//硬币可排列成以下几行:
//¤
//¤ ¤
//¤ ¤
//
//因为第三行不完整，所以返回2.
// 
//
// 示例 2: 
//
// 
//n = 8
//
//硬币可排列成以下几行:
//¤
//¤ ¤
//¤ ¤ ¤
//¤ ¤
//
//因为第四行不完整，所以返回3.
// 
// Related Topics 数学 二分查找 
// 👍 113 👎 0

package leetcode.editor.cn;

//441:排列硬币
class ArrangingCoins {
    public static void main(String[] args) {
        //测试代码
        Solution solution = new ArrangingCoins().new Solution();
    }

    //力扣代码
    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int arrangeCoins(long n) {
            if (n == 0) {
                return 0;
            }
            double number = (Math.sqrt(1 + 8 * n) - 1) / 2;

            return (int) (Math.floor(number));
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}