1629 b君的圓錐
基準時間限制:1 秒 空間限制:131072 kb 分值: 10 難度:2級演算法題
b君要用乙個表面積為s的圓錐將白山雲包起來。
b君希望包住的白山雲體積盡量大,b君想知道體積最大可以是多少。
注意圓錐的表面積包括底面和側面。
input
一行乙個整數,表示表面積s。(1 <= s <= 10^9)
output
一行乙個實數,表示體積。
input示例
output示例
1.504506
給出表面積s 求圓錐的最大體積v 數學題
由①得s=pi*r^2+pi*r*l //①
v=pi*r^2*h/3
//②h=sqrt(l^2-r^2) //③
l=(s-pi*r^2)/(pi*r) //④
將④③代入②得3*v=pi*r^2*sqrt( ((s-pi*r^2)/(pi*r))^2-r^2)
<=>3*v=r*sqrt((s-pi*r^2)^2-pi^2*r^4))
<=>3*v=r*sqrt(s^2-2*s*pi*r^2)
<=>3*v=sqrt(s^2*k-2*pi*s*k^2) //k=r^2
問題轉化為求s^2*k-2*pi*s*k^2
最大值
顯然當k=-b/(2*a)時有最大值 k=s/(4*pi)
代入並化簡得:v=s*sqrt(s/(2*pi))/6
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//#include
using
namespace
std;
#define ll long long
#define ull unsigned long long
#define pii pair
#define inf 1000000007
#define pll pair
#define pid pair
#define sci(a) scanf("%d",&a)
#define scll(a) scanf("%lld",&a)
#define scd(a) scanf("%lf",&a)
#define scs(a) scanf("%s",a)
#define pri(a) printf("%d\n",a)
#define prll(a) printf("%lld\n",a)
#define prd4(a) printf("%.4lf\n",a)
#define prd(a) printf("%lf\n",a)
#define prs(a) printf("%s\n",a)
//#define check_time
double
const pi=4*atan(1);
int main()
51nod 1629 B君的圓錐
1629 b君的圓錐 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 b君要用乙個表面積為s的圓錐將白山雲包起來。b君希望包住的白山雲體積盡量大,b君想知道體積最大可以是多少。注意圓錐的表面積包括底面和側面。input 一行乙個整數,表示表面積s。1 s 10 9...
51nod 1629 B君的圓錐
1629 b君的圓錐 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 收藏 關注 b君要用乙個表面積為s的圓錐將白山雲包起來。b君希望包住的白山雲體積盡量大,b君想知道體積最大可以是多少。注意圓錐的表面積包括底面和側面。input 一行乙個整數,表示表面積s。1 ...
51 Nod 1629 B君的圓錐
1629 b君的圓錐 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 b君要用乙個表面積為s的圓錐將白山雲包起來。b君希望包住的白山雲體積盡量大,b君想知道體積最大可以是多少。注意圓錐的表面積包括底面和側面。input 一行乙個整數,表示表面積s。1 s 10 9...