【FOJ】Problem 1010 Beavergnaw

Problem 1010 Beavergnaw.

题意

chomp - chew noisily
beaver - 可可爱爱海狸/水獭
frustums - 圆锥台
cone - 圆锥
diameter - 直径
cylinder - 圆柱体
海狸啃树图
输入D-树的直径,V-海狸啃掉的部分的体积
求d-中间圆柱体的直径
0 0结束输入

思路

整个D为直径的大圆柱体积 = 海狸啃掉的部分体积 + 两个圆锥台的体积 + 中间d为直径的小圆柱的体积
即 pi×D3 /4 = V + pi×(D-d)×(D2﹢D×d﹢d2)/12 + pi*d3/4
化简得 V = 1/6 × pi × (D3 - d3)
移项得 d = (D3 - 6×V/pi)1/3

笔记

  • π的表示:pi = acos(-1)不能直接用3.14
  • 圆台体积: V = pi×h×(R2﹢R×r﹢r2)/3 = pi×h×(D2﹢D×d﹢d2)/12
  • 圆柱体积: V = pi×h×R2 = pi×h×D2/4
  • double sqrt(double x);
    double pow(double x,double n);

代码

#include<cstdio>
#include<cmath>
using namespace std;
double pi = acos(-1);

int main(){
	double D, V, d;
	scanf("%lf %lf", &D, &V);
	while(D!=0 && V!=0){
		d = pow(pow(D, 3.0) - 6*V/pi, 1.0/3);
		printf("%.3f\n", d);
		scanf("%lf %lf", &D, &V);
	}
	return 0;
}
发布了28 篇原创文章 · 获赞 0 · 访问量 336

猜你喜欢

转载自blog.csdn.net/qq_44531167/article/details/105080885