一個胡蘿蔔是個等腰三角形,底邊長是1,高是h,要切成n段,每一刀切的時候平行底邊((2 ≤ n ≤ 1000, 1 ≤ 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<<" ";
}
}