描述
我们的帅气的HYC获得了蛋糕后,当然要找小伙伴分享啦,
这个蛋糕是一个半径为R,高度为H的圆柱形蛋糕,蛋糕上面平铺一层奶油,由于这个蛋糕太大,于是他找到ltwy帮他切蛋糕。
ltwy说要考考他,如果回答正确就帮忙,否则整个蛋糕就归ltwy了。
HYC犹豫了一下,问是什么问题.
ltwy说题目很简单,将蛋糕切下来一块,分成两个部分,告诉HYC这两部分的上表面面积(平铺奶油的那一面)之比r,问切下来的那一块蛋糕的切面面积。
HYC以为是这样:
想了一下确实很简单。不就是2 *R*H吗。
没想到ltwy是这么切的:
问此时HYC心里阴影面积(切面面积)。
输入
R 和 H 都是整数(1 < H < 10, 1 < R < 1000),r 是浮点数, 0 < r < 1,以EOF结束。
输出
输出面积,保留两位小数
样例输入1
复制
663 5 0.025
830 1 0.505
样例输出1
3144.76
1602.32
数学渣渣表示很无奈。。。。。。。。。。。。。。。。。。。。。。。。。。。看代码~~
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
-
#define PI acosf(-1)
-
const double E = 1e-8;
-
int isEqual (double a, const double b) {
-
return (a - b >= -E && a - b <= E);
-
}
-
int main(){
-
int R, H;
-
double r;
-
while(~scanf("%d%d",&R,&H)) {
-
scanf("%lf",&r);
-
double xiaxian = 0, shangxian = PI;
-
double i;//i为角度(i<Pi)
-
double zuo, you;
-
you = (2 * PI) / (1 / r + 1);
-
do{
-
i = (xiaxian + shangxian) / 2;
-
zuo = i - sin(i);
-
if(zuo < you) xiaxian = i;
-
else if(zuo > you) shangxian = i;
-
}while(!isEqual(zuo,you));
-
double S = 2 * R * sin(i / 2) * H;
-
printf("%.2f\n",S);
-
}
-
return 0;
-
}
- //注:PI 可以预处理成acosf(-1) ;//头文件为<math.h>
- //definde 的内容通常大写
- //常量通常不用define,而用const ...定义