题目:有Vtotal体积的材料,分成n分,做成n个相同的盘子,总半径为n*sqrt(Vtotal/n - V0),
V0是一个给定的限制,Vtotal/n < V0时解为0,输出总半径最大的n的值。
分析:数学题。直接配方法求最大值,n = Vt / (2V0),关键是无最大值和解不唯一的判断。
解不唯一时:n的小数部分是0.5;
无解时情况:Vt <= V0;
说明:Vt <= 2*V0时结果是1,(⊙v⊙)。
#include <stdio.h>
#include <stdlib.h>
int main()
{
double Vt, V0;
while (~scanf("%lf%lf",&Vt,&V0) && Vt+V0) {
if (Vt <= V0) {
printf("0\n");
}else if (Vt <= 2*V0) {
printf("1\n");
}else {
if (0.5*Vt/V0 - (int)(0.5*Vt/V0) == 0.5) {
printf("0\n");
}else if (0.5*Vt/V0 - (int)(0.5*Vt/V0) < 0.5){
printf("%d\n",(int)(0.5*Vt/V0));
}else {
printf("%d\n",(int)(0.5*Vt/V0)+1);
}
}
}
return 0;
}