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个立方体建立的金字塔的最高层数为多少?(金字塔如下所示)
![](http://codeforces.com/predownloaded/09/1a/091ac4ff761d260e70216e1484da7b4187d2e2b8.png)
题目分析:
可以从建立i层高的金字塔所需立方体数考虑,利用循环语句如for语句,进行计算。一层一层的建立后比较,超过提供的立方数则无法继续叠层,跳出循环,如果没有,则继续下一轮的循环。
源代码:
题目大意:
用n个立方体来建一座金字塔,第一水平线使用1个立方体,第二水平线使用(1+2)个立方体,第三水平线使用(1+2+3)个立方体,由此类推,第i个立方体使用(1+2+3+...+i)个立方体,总使用的立方体数目不超过n,问n个立方体建立的金字塔的最高层数为多少?(金字塔如下所示)
![](http://codeforces.com/predownloaded/09/1a/091ac4ff761d260e70216e1484da7b4187d2e2b8.png)
题目分析:
可以从建立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; }
相关文章推荐
- 【转】以太网的帧
- MyEclpise_提示过期要求注册
- bluetooth4.0 协议概略
- Oracle登录方法
- vs2013中调用pthread
- 使用DialogFragment来创建加载进度UI
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- mysql大整数溢出报错--新手入门教程 20150717
- 知识储备:java群聊系统
- stretchableImageWithLeftCapWidth: topCapHeight:ht;
- 最大的最小公倍数
- UITableView优化技巧
- 逻辑数据库设计 - 需要ID(谈主键Id)
- 优酷上传视频代码
- Spring-data-redis:特性与实例
- 文件描述符资料-------15--7-17:文件描述符和文文件对应
- leetCode(41):Convert Sorted Array to Binary Search Tree
- Bridge Pattern
- Javascript核心概述 - 深入了解javascript
- leetCode(41):Convert Sorted Array to Binary Search Tree 分类: leetCode 2015-07-17 17:03 95人阅读 评论(0) 收藏