⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 狐长.txt

📁 ACM资料大集合
💻 TXT
字号:
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
/*
#define NMAX 5000
#define NUM 2000
#define MIN 0.000000001
#define PI 3.1415926535897932324626
double f[NMAX];

void init(int num)
{
    int i;
    double tt;
    for(i=0;i<=num;i++)
    {
        tt=((double)i/(double)num)*PI/2;
        f[i]=sin(tt);
    }
}

double cal(double wide,double high,int num)
{
    double len=0,tt;
    int i;
    for(i=1;i<=num;i++)
    {
        tt=(wide/(double)num)*(wide/(double)num)+(f[i]-f[i-1])*high*(f[i]-f[i-1])*high;
        len+=sqrt(tt);
    }
    return len;
}

double solve(double al,double alx)
{
    double mid,high,low,temp;
    high=al/2;
    low=0;
    mid=(high+low)/2;
    while(high-low>MIN)
    {
        temp=2*cal(alx/2,mid,NUM);
        if(temp<al) low=mid;
        else if(temp>al) high=mid;
        else break;
        mid=(low+high)/2;
    }
    return mid;
}
int main()
{
    double a,b,lx;//lx原长 
    init(NUM);
    scanf("%lf %lf %lf",&lx,&a,&b);
    while(!(a==-1 && b==-1 && lx==-1)) 
    {
        printf("%.3lf\n",solve(lx*(1+a*b),lx));
        scanf("%lf %lf %lf",&lx,&a,&b);
    }
    return 0;
}
*/
#define FLT_EPSILON 1e-12
int main()
{ 
  double lp,n,c,l,r,rp;
  while(scanf("%lf %lf",&lp,&l)!=EOF)
  {
//		lp = (1 + n * c) * l;
		r = lp * lp * 0.25 / sqrt(lp * lp - l * l);
		if(lp==l) printf("0.000\n");
		else{
		do
		{
			double temp = lp / (2 * r);
			rp = r;
			r += r * (l - 2 * r * sin(temp)) / (l - lp * cos(temp));
		}
		while(fabs(r - rp) > r * FLT_EPSILON);
		printf("%.3lf\n", r - sqrt(r * r - l * l * 0.25));
        }
    }
    return 0; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -