hdu 3011

/*
我的做法是:设边长为r,CE=a,AG=x,正四面体的高为sqrt(6)/3 * r,体积可以求出为sqrt(2)/12 * r*r*r ,那么只要列个方程其中一个的体积等于总体积的一半就可以了,求ABEFHG这部分的体积为两个部


分组成,上面一个小正四面体,和下面一个棱台,棱台体积用公式为1/3 *(s1+s2+sqrt(s1*s2))*h(棱台高),均可以用未知数表示出来,然后在化简得到这样一个
方程:x^2+(r-a)x+r^3/(2a)-2*r^2+a*r=0 这样只要解这个方程就可以了,还要注意的是,求出来的解必须要满足0=< x <=r,否则和无解一样输出Oh, my god!

*/ 


//  Created by Chenhongwei on 2016-04-15 Friday 00:54
//  Copyright (c) 2016 Chenhongwei. All rights reserved.

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <climits>
#include <queue>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#include <vector>
#include <sstream>
#include <algorithm>
#define root 1,n,1
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
const int inf=1e9;
const int mod=1e9+7;
const int maxn=1e5+100;
typedef long long ll;
typedef unsigned long long ull;
int main()
{
	//ios::sync_with_stdio(false);
    //freopen("in.txt","r",stdin);
	//freopen("out.txt","w",stdout);
	double r,a,b,c,t;
    double x1,x2;
    while(scanf("%lf%lf",&r,&a)!=EOF)
    {
        t=-1.0;
        b=r-a;
        c=r*r*r/a/2-2*r*r+a*r;
        if(b*b-4*c<0)
        {
            printf("Oh, my god!\n");
            continue;
        }
        x1=(-b+sqrt(b*b-4*c))/2;
        x2=(-b-sqrt(b*b-4*c))/2;
        if(x1>=0&&x1<=r)
            t=x1;
        else if(x2>=0&&x2<=r)
            t=x2;
        if(t>=0&&t<=r)
                printf("%.2lf\n",t);
        else
            printf("Oh, my god!\n");
    }
	return 0;
}


阅读更多
想对作者说点什么? 我来说一句

动态规划背包问题入门

2011年07月07日 328KB 下载

dspic30f3011中文资料

2010年05月16日 3.54MB 下载

HDU DP动态规划

2010年03月31日 454KB 下载

hdu acm 教案(4)

2008年10月02日 839KB 下载

hdu acm 教案(11)

2008年10月02日 135KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭