51NOD 1629 B君的圓錐

2021-07-22 01:26:35 字數 1774 閱讀 6288

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...