标签:
题目链接:http://codeforces.com/problemset/problem/492/A
题目大意:
用n个立方体来建一座金字塔,第一水平线使用1个立方体,第二水平线使用(1+2)个立方体,第三水平线使用(1+2+3)个立方体,由此类推,第i个立方体使用(1+2+3+...+i)个立方体,总使用的立方体数目不超过n,问n个立方体建立的金字塔的最高层数为多少?(金字塔如下所示)
题目分析:
可以从建立i层高的金字塔所需立方体数考虑,利用循环语句如for语句,进行计算。一层一层的建立后比较,超过提供的立方数则无法继续叠层,跳出循环,如果没有,则继续下一轮的循环。
源代码:
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int n,m=0,k=0,count=0;//n为测试数据 6 while(cin>>n){ 7 for(int i=1;i<=n;i++) 8 { 9 m+=i;//计算金字塔第i层需要的立方数m 10 count+=m;//计算建立i层金字塔需要的立方体总数 11 k++;//金字塔层数 12 if(count==n) 13 break;//建立i层金字塔立方体数恰好等于提供的立方数 14 else if(count>n) 15 { k--;//建立i层金字塔立方体数超过提供的立方数 16 break; 17 } 18 } 19 cout<<k<<endl; 20 k=0; 21 m=0; 22 count=0; 23 } 24 return 0; 25 }
标签:
原文地址:http://www.cnblogs.com/huaszjh/p/4655123.html