码迷,mamicode.com
首页 > 其他好文 > 详细

ACM第二次比赛( C )

时间:2015-07-17 20:24:42      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u

Description

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.

Input

The first line contains integer n (1 ≤ n ≤ 104) — the number of cubes given to Vanya.

Output

Print the maximum possible height of the pyramid in the single line.

Sample Input

Input
1
Output
1
Input
25
Output
4

 

 

程序分析:此题的考点还是在于累加。第一次是1,第二次就是1+2,第三次就是1+(1+2)+3如此循环,所以这也要求了我们应该把每一次答案放在一个数里,对于这个题目我们用数组更能够解决问题,在用一个for循环把要加的数加进来。但是应该注意的是最后我们sum-n>0的时候,我们是加到超过了n的,所以j应该减1.但是如果sum==0,则j的值就是我们要得到的值。

程序代码:

#include<cstdio>
#include<iostream>
using namespace std;
int main( )
{int a[200]={0};
	int i,n,j,sum=0;
	a[1]=1;
	for(i=2;i<200;i++)
	{
		for(j=0;j<=i;j++)
		a[i]+=j;
	}	
		
	scanf("%d",&n);
	for(j=1;j<=i;j++)
	{
		sum+=a[j];
		if(sum>n)
		{	printf("%d\n",j-1);
		break;
		}
		else if(sum==n)
		{printf("%d\n",j);
		break;
		}
	}
	return 0;
}

ACM第二次比赛( C )

标签:

原文地址:http://www.cnblogs.com/yilihua/p/4655422.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!