(水题)题目链接:点击打开链接
题目大意:给定一个三角形,底始终为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;
}