leetcode 441. Arranging Coins

来源:互联网 发布:linux工具链 编辑:程序博客网 时间:2024/06/17 05:00

You have a total of n coins that you want to form in a staircase shape, where every k-th row must have exactly k coins.

Given n, find the total number of full staircase rows that can be formed.

n is a non-negative integer and fits within the range of a 32-bit signed integer.

Example 1:

n = 5

The coins can form the following rows:
¤
¤ ¤
¤ ¤

Because the 3rd row is incomplete, we return 2.
Example 2:

n = 8

The coins can form the following rows:
¤
¤ ¤
¤ ¤ ¤
¤ ¤

Because the 4th row is incomplete, we return 3.

题意很简单,就是一个简单的等比数列求和问题

代码如下:

#include <iostream>#include <vector>#include <map>#include <set>#include <queue>#include <stack>#include <string>#include <climits>#include <algorithm>#include <sstream>#include <functional>#include <bitset>#include <cmath>using namespace std;class Solution {public:    /*        1 + 2 + 3 + ... + x = n        -> (1 + x)x / 2 = n        ->x ^ 2 + x = 2n        ->x ^ 2 + x + 1 / 4 = 2n + 1 / 4        -> (x + 1 / 2) ^ 2 = 2n + 1 / 4        -> (x + 0.5) = sqrt(2n + 0.25)        ->x = -0.5 + sqrt(2n + 0.25)    */    int arrangeCoins(int n)     {        return floor(-0.5 + sqrt((double)2 * n + 0.25));    }};
原创粉丝点击