1152 - C语言5.14
时间限制 : 1 秒
内存限制 : 32 MB
有4个圆塔,圆心分别为(2,2),(-2,2),(2,-2),(-2,-2),圆半径为1。这4个塔的高度分别为10m,塔以外无建筑物。现在输入任一点的坐标,求该点的建筑高度(塔外的高度为0)。
题目输入
两个用空格分隔的实数,表示输入的点坐标。
题目输出
输入坐标位置的建筑高度,保留2位小数。
请注意行尾输出换行。
输入/输出样例
输入格式
2.1 2.3
输出格式
10.00
C语言解答
#include <stdio.h> int main() { int h = 10; float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2; float x,y,d1,d2,d3,d4; scanf("%f %f", &x, &y); d1=(x-x1) * (x-x1)+(y-y1) * (y-y1); d2=(x-x2) * (x-x2)+(y-y2) * (y-y2); d3=(x-x3) * (x-x3)+(y-y3) * (y-y3); d4=(x-x4) * (x-x4)+(y-y4) * (y-y4); if (d1>1 && d2>1 && d3>1 && d4>1) h=0; printf("%.2f\n", h + .0); return 0; }
C++解答
#include <stdio.h> int main() { int h = 10; float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2; float x,y,d1,d2,d3,d4; scanf("%f %f", &x, &y); /*求该点到各中心点的距离*/ d1=(x-x1) * (x-x1)+(y-y1) * (y-y1); d2=(x-x2) * (x-x2)+(y-y2) * (y-y2); d3=(x-x3) * (x-x3)+(y-y3) * (y-y3); d4=(x-x4) * (x-x4)+(y-y4) * (y-y4); if (d1>1 && d2>1 && d3>1 && d4>1) h=0; /*判断该点是否在塔外*/ printf("%.2f\n", h + .0); return 0; }
Java解答
import java.util.*; public class Main { public static void main(String args[]) { Scanner cin = new Scanner(System.in); double x,y,d,h; x=Math.abs(cin.nextDouble()); y=Math.abs(cin.nextDouble()); d=Math.sqrt((x-2)*(x-2)+(y-2)*(y-2)); if(d<1) h=10.00; else h=0.00; System.out.printf("%.2f\n",h); } }
Python解答
x,y = [float(x) for x in raw_input().split()] if (abs(x)-2)**2 + (abs(y)-2)**2 < 1: print "10.00" else: print "0.00"