码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 1487 - Volume(积分)

时间:2014-08-13 19:08:27      阅读:362      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   os   io   ar   代码   amp   

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;   
}


UVA 1487 - Volume(积分),布布扣,bubuko.com

UVA 1487 - Volume(积分)

标签:style   http   color   os   io   ar   代码   amp   

原文地址:http://blog.csdn.net/accelerator_/article/details/38537067

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!