POJ 1607 Deck(n 块相同的木板重叠…

题意:n 块相同的木板重叠,最多能够伸出桌面多远

分析:(来自网上,比较好的分析)就一物理题,没啥好多说的。输出格式还害我WA一次,无比蛋痛。

 这是一个非常经典的问题。传统的答案是,把第一块木板的重心放在第二块木板的右边缘,把这两块木板的重心放在第三块木板的右边缘,把这三块木板的重心放在第四块木板的右边缘⋯⋯利用杠杆原理可以推出,如果每块木板都是单位长,那么 n 块木板可以伸出桌面 (1 + 1/2 + 1/3 + … + 1/n) / 2 个单位的长度。由调和级数的性质,我们立即可以得知,只要木板数量足够多,木块伸出桌面的长度是没有上界的,想伸出去多长就能伸出去多长。但同时,这个增长速度也非常缓慢⋯⋯ 20 块木板只能伸出大约 1.79887 个单位的长度, 1000 块木板也只能伸出大约 4.8938 个单位的长度。

 

 

贴一下代码:

C++语言:
#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);
    }
}

你可能感兴趣的:(POJ 1607 Deck(n 块相同的木板重叠…)