Vanya got n cubes. He decided to build a pyramid from them. Vanya wants to build the pyramid as follows: the top level of the pyramid must consist of 1 cube, the second level must consist of 1 + 2 = 3 cubes, the third level must have 1 + 2 + 3 = 6 cubes, and so on. Thus, the i-th level of the pyramid must have 1 + 2 + ... + (i - 1) + i cubes.
Vanya wants to know what is the maximum height of the pyramid that he can make using the given cubes.
The first line contains integer n (1 ≤ n ≤ 104) — the number of cubes given to Vanya.
Print the maximum possible height of the pyramid in the single line.
1
1
25
4
Illustration to the second sample:
题目大意:
一种搭积木的游戏,第一层有一个,第二层有三个,第三层有六个,第四层有十个、依次类推,问现在手里一共有N个积木,问最多能够撘出来最高的积木层数。
思路:
直接模拟计算即可。
#include<stdio.h>
#include<string.h>
using namespace std;
#define ll __int64
int main()
{
int n;
while(~scanf("%d",&n))
{
ll sum=1;
ll now=3;
ll tmp=3;
ll output=1;
for(int i=1;i<=n;i++)
{
if(n>=sum)output=i;
else break;
sum+=now;
now+=tmp;
tmp++;
}
printf("%I64d\n",output);
}
}