【kAri OJ 616】Asce的树
时间限制 1000 ms 内存限制 65536 KB
题目描述
作为一个东北大老爷们,大A熊以力气大著称,现在有一颗半径为r的树,剖面图如黑色的圆,大A熊决定搬几个半径为R的圆柱形桶将其围住,剖面图如红色和绿色的圆
如图,大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
分析
由几何关系可得,
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 0; }
┆凉┆暖┆降┆等┆幸┆我┆我┆里┆将┆ ┆可┆有┆谦┆戮┆那┆ ┆大┆始┆ ┆然┆
┆薄┆一┆临┆你┆的┆还┆没┆ ┆来┆ ┆是┆来┆逊┆没┆些┆ ┆雁┆终┆ ┆而┆
┆ ┆暖┆ ┆如┆地┆站┆有┆ ┆也┆ ┆我┆ ┆的┆有┆精┆ ┆也┆没┆ ┆你┆
┆ ┆这┆ ┆试┆方┆在┆逃┆ ┆会┆ ┆在┆ ┆清┆来┆准┆ ┆没┆有┆ ┆没┆
┆ ┆生┆ ┆探┆ ┆最┆避┆ ┆在┆ ┆这┆ ┆晨┆ ┆的┆ ┆有┆来┆ ┆有┆
┆ ┆之┆ ┆般┆ ┆不┆ ┆ ┆这┆ ┆里┆ ┆没┆ ┆杀┆ ┆来┆ ┆ ┆来┆