题意:n 块相同的木板重叠,最多能够伸出桌面多远
分析:(来自网上,比较好的分析)就一物理题,没啥好多说的。输出格式还害我WA一次,无比蛋痛。
http://www.matrix67.com/blogimage_2011/2011060215.png1607 Deck(n 块相同的木板重叠,最多能够伸出桌面多远 )" />
这是一个非常经典的问题。传统的答案是,把第一块木板的重心放在第二块木板的右边缘,把这两块木板的重心放在第三块木板的右边缘,把这三块木板的重心放在第四块木板的右边缘⋯⋯利用杠杆原理可以推出,如果每块木板都是单位长,那么
n 块木板可以伸出桌面 (1 + 1/2 + 1/3 + … + 1/n) / 2
个单位的长度。由调和级数的性质,我们立即可以得知,只要木板数量足够多,木块伸出桌面的长度是没有上界的,想伸出去多长就能伸出去多长。但同时,这个增长速度也非常缓慢⋯⋯
20 块木板只能伸出大约 1.79887 个单位的长度, 1000 块木板也只能伸出大约 4.8938 个单位的长度。
http://www.matrix67.com/blogimage_2011/2011060216.png1607 Deck(n 块相同的木板重叠,最多能够伸出桌面多远 )" />
贴一下代码:
#include<iostream>
using
namespace
std;
int
main()
{
int card;
float i;
double overhang ;
cout<<"Cards
Overhang"<<endl;
while(cin>>card)
{
overhang
= 0;
for(i=1;i<=card;i=i+1)
overhang
+= 1/i;
overhang
=
overhang/2;
printf("]
%8.3f\n",card,overhang);
}
}
加载中,请稍候......