【LightOJ】[1137]Expanding Rods

文章字数:204

问题描述

Expanding Rods

问题分析

可推出关于圆弧半径r和h的方程

$\sqrt{r^2-(\dfrac{l}{2})^2}+h=r$ ①
$2*arsin(\dfrac{l}{2r})*r=l’$②

由①式可化简出
$r=\dfrac{h^2+\dfrac{l^2}{4}}{2h}$
代入②式中可求出l'

把其与根据题目数据求出的l’比较
可得到mid与res的比较关系
从而可以进行二分查找

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<stdio.h>
#include<math.h>
double L,n,c;
bool judge(double m) {
	double t=(m*m+L*L/4.0)/m/2.0;
	if(2*asin(L/2.0/t)*t>=(1+n*c)*L)
		return true;
	else
		return false;
}
int main() {
	int T,kase=0;
	scanf("%d",&T);
	while(T--) {
		scanf("%lf %lf %lf",&L,&n,&c);
		double l=0,r=L;
		while(r-l>1e-8) {
			double mid=(l+r)/2;
			if(judge(mid))
				r=mid;
			else
				l=mid;
		}
		printf("Case %d: %.8lf\n",++kase,r);
	}
	return 0;
}

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...