/*
* 程序的版权和版本声明部分:
* Copyright (c) 2014,郑州大学SIAS国际学院
* 作 者: 王 杰
* 完成日期:2014 年 3 月 23 日
*
* 对任务及求解方法的描述部分:
* 输入描述: 略或见注释、总结
* 问题描述: 略或见注释、总结
* 程序输出: 略或见注释、总结
* 问题分析: 略或见注释、总结
* 算法设计: 略或见注释、总结
*/
#include<stdio.h>
#include<math.h>
int main()
{
int t,count1;
double l,d,r,count;
scanf("%d",&t);
while(t--){
count=0;
scanf("%lf%lf%lf",&l,&d,&r);
if(4*r*r<d*d+1){
printf("impossible\n");
//printf("%lf %lf %lf %lf\n",r*r,4*r*r,d*d,d*d+1);
}
//这里可以应用贪心思想,也可以直接求出结果(数学问题)
else{
//1、直接数学问题求解,但就是在数据类型上有点绕
count=l/(2*sqrt(r*r-d*d/4));
//printf("%lf %lf %lf %lf %lf %lf\n",r*r,d*d,d*d/4,r*r-d*d/4,sqrt(r*r-d*d/4),2*sqrt(r*r-d*d/4));
count=ceil(count); //向上取整函数;floor() 向下取整;结果仍是double型
count1=int(count);
printf("%d\n",count1);
//2、贪心方法
/*
while(l>0){
l-=2*sqrt(r*r-d*d/4);
//printf("%lf %lf %lf %lf %lf %lf\n",r*r,d*d,d*d/4,r*r-d*d/4,sqrt(r*r-d*d/4),2*sqrt(r*r-d*d/4));
count++;
}
printf("%d\n",count);
*/
}
}
return 0;
}
运行结果:
总结:见注释;主要还是数据类型之间的转换关系,在计算机内部,数据是怎么流转的