【kAri OJ 616】Asce的树

时间:2023-03-09 13:43:25
【kAri OJ 616】Asce的树
时间限制 1000 ms 内存限制 65536 KB

题目描述

作为一个东北大老爷们,大A熊以力气大著称,现在有一颗半径为r的树,剖面图如黑色的圆,大A熊决定搬几个半径为R的圆柱形桶将其围住,剖面图如红色和绿色的圆

【kAri OJ 616】Asce的树

如图,大A熊必须用7个半径为r的桶能被围住,他的树。

hint:

double转换int可以这样: x=(int)y;这种方式是下取整的。

输入输出很大,cin cout 会造成超过时间限制,请使用scanf输入和printf输出,控制符可以用 "%lf" 。

you may use those function

Trigonometric functions

cos
Compute cosine (function )
sin
Compute sine (function )
tan
Compute tangent (function )
acos
Compute arc cosine (function )
asin
Compute arc sine (function )
atan
Compute arc tangent (function )
atan2
Compute arc tangent with two parameters (function )

Hyperbolic functions

cosh
Compute hyperbolic cosine (function )
sinh
Compute hyperbolic sine (function )
tanh
Compute hyperbolic tangent (function )
acosh
Compute arc hyperbolic cosine (function )
asinh
Compute arc hyperbolic sine (function )
atanh
Compute arc hyperbolic tangent (function )

输入格式

数据由多组输入组成,EOF结束。

每组数据一行,包含两个数r,R(0<r,R<100000.0)

输出格式

每组输出占一行,表示大A熊最少需要放置的桶的个数。

输入样例

3.0 3.0
3.0 2.9

输出样例

6
7

分析

【kAri OJ 616】Asce的树

由几何关系可得,

R/(R+r)=sinθ

θ=2π/(2*n)=π/n

所以n=π/arcsin(R/(R+r)),并且向上取整。

然后在转换成整数输出n。

代码

#include<cstdio>
#include<cmath>
#define ll long long
#define dd double const dd PI=acos(-1.0);
dd r,R,n;
ll ans; int main()
{
while(~scanf("%lf%lf",&r,&R))
{
n=ceil(PI/asin(R/(R+r)));
ans=(ll)n;
printf("%ld\n",ans);
}
return ;
}