1152 - C语言5.14

通过次数

0

提交次数

0

时间限制 : 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"