您的位置:首页 > 其它

Vanya and Cubes

2015-07-17 17:05 211 查看
题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=89212

题目大意:

用n个立方体来建一座金字塔,第一水平线使用1个立方体,第二水平线使用(1+2)个立方体,第三水平线使用(1+2+3)个立方体,由此类推,第i个立方体使用(1+2+3+...+i)个立方体,总使用的立方体数目不超过n,问n个立方体建立的金字塔的最高层数为多少?(金字塔如下所示)



题目分析:

可以从建立i层高的金字塔所需立方体数考虑,利用循环语句如for语句,进行计算。一层一层的建立后比较,超过提供的立方数则无法继续叠层,跳出循环,如果没有,则继续下一轮的循环。

源代码:

#include<iostream>
using namespace std;
int main()
{
int n,m=0,k=0,count=0;//n为测试数据
while(cin>>n){
for(int i=1;i<=n;i++)
{
m+=i;//计算金字塔第i层需要的立方数m
count+=m;//计算建立i层金字塔需要的立方体总数
k++;//金字塔层数
if(count==n)
break;//建立i层金字塔立方体数恰好等于提供的立方数
else if(count>n)
{   k--;//建立i层金字塔立方体数超过提供的立方数
break;
}
}
cout<<k<<endl;
k=0;
m=0;
count=0;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: