解题思路:
图片引用自kevin的文章
根据上图得出的公式求解。
注意事项:
1.需要自定义 PI的值,或使用acos(-1) 来求(会增加 时间和空间 的占用)。PI 可通过 printf("%.15f", acos(-1)) 来查看(若 记不住 的话); 2.此题涉及的变量 均是double,若设置为float 会因为 精度不够 而出错 ; 3.min :对上图中第一种情况的越界判断 ,若 r 取 公式计算出的值 与 w/2 之间的最小值 (即 r若超过 w/2 ,则赋值为 w/2); 4.max :取2种情况下 , 最大的值(biggest possible volume ); 5.注意 最后的输出格式 : %.3lf\n
参考代码:
//#include<bits/stdc++.h> #include<stdio.h> #include<algorithm> using namespace std; #define PI 3.14159265359 double h, w, r, v1, v2; int main() { while(scanf("%lf %lf", &w, &h) && w && h){ r = min(h / (2 + 2 * PI), w / 2); v1 = PI * r * r * w; r = w / (2 * PI); v2 = PI * r * r * (h - 2 * r); printf("%.3lf\n", max(v1, v2)); } return 0; }
0.0分
2 人评分
C语言训练-数字母 (C语言代码)浏览:670 |
简单的a+b (C语言代码)浏览:560 |
【蟠桃记】 (C语言代码)浏览:1084 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:583 |
Cylinder (C语言描述+详细分析)浏览:3374 |
K-进制数 (C语言描述,蓝桥杯)浏览:955 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:561 |
C二级辅导-公约公倍 (C语言代码)浏览:537 |
Hello, world! (C语言代码)浏览:916 |
理财计划 (C语言代码)浏览:494 |