Problem 1077 铁皮容器
Accept: 1073 Submit: 2371 Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
使用白铁皮制作圆柱容器(有盖),其中每个容器耗用的铁皮量(表面积)固定为1000平方厘米。在已知容器的容积情况下,编程计算容器底半径的最小可能取值。其中容器的容积为整数,半径精确到小数点后面一位。
Input
输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数。后面紧接着k行,每行对应一个测试例,含一个整数n(0<=n<=20000),代表容积。
Output
每个测试例对应一行输出,含一个实数,表示半径的值,若无解则输出“NO”。
Sample Input
2
1000
3000
Sample Output
2.1
NO
Source
FJNU Preliminary 2005
解决方案
根据数学公式可推导出
本题不必想着如何求解一元三次方程
而应考虑枚举方法
#include<iostream>
#define pi 3.14159265358
int main() {
int k, flag;
double v, r;
scanf("%d", &k);
while (k--) {
scanf("%lf", &v);
flag = 0;
for (r = 0.00;; r += 0.01) {
if (pi*r*r > 500) {
break;
}
else if ((500 * r - pi * r*r*r) > v) {
flag = 1;
break;
}
}
if (flag) {
printf("%.1lf\n", r);
}
else {
printf("NO\n");
}
}
return 0;
}