C. Naming Company 幾何

題目大意:

一個胡蘿蔔是個等腰三角形,底邊長是1,高是h,要切成n段,每一刀切的時候平行底邊((2 ≤ n ≤ 10001 ≤ h ≤ 105),分給n個兔子,每個兔子一段,每一段面積相等,讓你分別求出n-1刀切得位置距離頂部的距離,並輸出;

如圖所示:

基本思路:

設第i次切距離頂部距離爲h(i),設s爲切前i次的上面等腰三角形的面積,那麼s=h(i)*h(i)/(h*n);(根據相似三角形求出),又因爲每一段面積相等,所以s=i*h/(n*2);則h(i)=h*sqrt(i/n);

不過需要注意,我也不知道爲啥,當把下面程序中用cin輸入的改爲scanf就會輸出亂碼,真心不懂啊;

代碼如下:

#include<bits/stdc++.h>
using namespace std;
typedef long double ld;
int main()
{
    int n;
    ld h;
    cin>>n>>h;
    cout<<setprecision(20);
    for(int i=1;i<n;i++)
    {
        ld temp=h*sqrt((ld)i/((ld)n));
        cout<<temp<<" ";
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章