小白题解 Codeforces 794B Cutting Carrot

来源:互联网 发布:js dom编程艺术 pdf 编辑:程序博客网 时间:2024/05/29 04:51

(水题)题目链接:点击打开链接

题目大意:给定一个三角形,底始终为1,高h,用平行于底边的线将它分成面积相等的n份,分别求第i份的底边到大三角形定点的距离。

分析:设第i份对应高为Y,由每份面积相等可以写出递推式:Yi^2 * k-Y(i-1)^2 * k=Y1^2 * k,进一步可以求出通项公式为Yi=pow(i*h^2/n , 0.5)。好啦,下面就是AC代码了。

#include<cstdio>#include<cmath>using namespace std;double f[1000+5];int main(){    int n;    double h;    scanf("%d%lf",&n,&h);    double base=h*h/n;   //这部分先计算出来,可以避免重复计算    for(int i=1;i<n;i++)    {        f[i]=sqrt(i*base);    }    for(int i=1;i<n;i++)        printf("%.12f%c",f[i],i==n-1?'\n':' ');   //输出形式与样例保持一致    return 0;}


2 0