首页 > 代码库 > UVA 1487 - Volume(积分)
UVA 1487 - Volume(积分)
UVA 1487 - Volume
题目链接
题意:给定r,h,求图中该图形体积
思路:积分题,用总面积减去重合体积,一个卦限重合体积为∫∫Dr2?h2??????√,求得r2x?13x3,然后这个面积乘8就是总重合体积,但是注意题目中可能存在2r>h,对于这种情况实际上中间重合部分等于多一个立方体,求出该立方体高就能求出体积了,画图很容易看出高为r2?h22,算出重合体积再用总体积减去即可
代码:
#include <cstdio> #include <cstring> #include <cmath> const double pi = acos(-1.0); double r, h; double f(double x) { return r * r * x - 1.0 / 3 * x * x * x; } double solve() { double tot = r * r * pi * h * 2; if (r * 2 <= h) return tot - (f(r) - f(0)) * 8; h /= 2; double H = sqrt(r * r - h * h); return tot - (h * h * H + f(r) - f(H)) * 8; } int main() { while (~scanf("%lf%lf", &r, &h)) { printf("%.4lf\n", solve()); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。