C. Naming Company 几何

来源:互联网 发布:电子导游软件 编辑:程序博客网 时间:2024/05/21 12:45
题目大意:

一个胡萝卜是个等腰三角形,底边长是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<<" ";
    }
}


0 0
原创粉丝点击