标签:
这题的错误是少考虑了一种情况,路由覆盖的直径小于路宽的时候,直接判错!!!不用计算路由之间距离了
思路就是计算路由间距为根号下2(r^2-(w/2)^2),这里面有个数据类型转换的问题,w/2这个值是不精确的,还有sqrt对负数也是无法识别的,所以要人工加上2*r > w。
还有最后输出用了上取整
#include <iostream> #include <cmath> using namespace std; int main() { int n; cin >> n; int l,w,r; double d; while(n--) { cin >> l >> w >> r; d = sqrt(r*r-w*1.0/2*w/2); if(2*d < 1.0 + 1e-6||w > 2*r) cout << "impossible"; else cout << ceil(l*1.0/(2*d)); cout << endl; } return 0; }
标签:
原文地址:http://www.cnblogs.com/ekinzhang/p/4374052.html