题意:

  有一个金币堆的金字塔,最上层就有一个金币,以后的i层都是边长为i的实心三角形,给你层数,问:一共有多少个金币?(用科学计数法表示,并且保留两位小数)

解题思路:

  根据题意可知求出1*n+2*(n-1)+3*(n-2)+4*(n-3)+.......+(n-2)*3+(n-1)*2+n*1的和即可,但是要化简一下求出n*(n+1)*(n+2)/6;

证明:

  1 * n + 2 (n - 1) + 3 (n - 2) + …… + (n - 2) * 3 + (n - 1) * 2 + n * 1

  = 1 * (n + 1 - 1) + 2 (n + 1 - 2) + 3 (n + 1 - 3) + …… + (n - 2) * (n + 1 - (n - 2)) + (n - 1) * (n + 1 - n - 1) + n * (n + 1 - n)

  =(1 + 2 + 3 + ... + n)(n + 1) - (1^2 + 2^2 + 3^2 + ..... + n^2)

  =n (n + 1)^2 / 2 - n (n + 1) (2n + 1) / 6       (n (n + 1) (2n + 1) / 6后面会证明)

  =n * (n + 1) * (n + 2) / 6          (证毕)

  (n+1)^3-n^3=3n^2+3n+1,

  n^3-(n-1)^3=3(n-1)^2+3(n-1)+1

  

  3^3-2^3=3*(2^2)+3*2+1

  2^3-1^3=3*(1^2)+3*1+1.

  这n个等式两边分别相加得出:

  (n+1)^3-1=3(1^2+2^2+3^2+....+n^2)+3(1+2+3+...+n)+n,

  (n+1)^3-1=3(1^2+2^2+3^2+....+n^2)+3((n+1)n/2)+n,

  整理可得上述式子。

代码:

 #include <stdio.h>
int main ()
{
int n, i, k;
double s; while (scanf ("%d", &n), n)
{
s = 1.0 * n * (n+) * (n+) / ;
k = ;
while (s >= )
{
s /= ;
k++;
}
printf ("%.2fE%d\n", s, k);
} return ;
}
  
 

最新文章

  1. bootstrap无限级分类 jq拓展 之前的无限级分类的封装版~
  2. 关于激活Bentley软件详细步骤介绍(再补充一个)
  3. C#反射设置属性值和获取属性值
  4. warning C4005: “AF_IPX”: 宏重定义的解决办法
  5. unity3d web.config设置
  6. VS构建工具介绍
  7. ios 字典转模型
  8. 使用FTP删不掉文件的解决方法
  9. java gui可见即可得
  10. Java 枚举7常见种用法(转)
  11. 七个人生工具:SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则
  12. Django项目结构介绍
  13. LeetCode算法题-Convert BST to Greater Tree(Java实现)
  14. JAVAEE 第六周
  15. linux shell脚本调用java main方法 代码
  16. verilog中defparam的用法 (verilog调用底层模块(只改变)参数的传递)
  17. Greenplum query Oracle via DLINK
  18. Python学习笔记(一)——基本知识点
  19. 使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html
  20. WPF 降低.net framework到4.0

热门文章

  1. 删除,“windows setup 启用EMS”
  2. matlab 画图技巧
  3. Visual Studio VS如何卸载Visual assistant
  4. HDU4763 Theme Section 【KMP】
  5. POJ之01背包系列
  6. HDU4612 Warm up —— 边双联通分量 + 重边 + 缩点 + 树上最长路
  7. casperjs在拆分文件后的中文乱码问题的解决
  8. YTU 2754: C++习题-快速排序
  9. web项目开发 之 前端规范 --- HTML编码规范
  10. 五:多线程--NSOperation基本操作