解题思路:

屏幕截图 2022-04-06 213445.png

图片引用自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.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论