用Java解决牛客网题目WY4炮台攻击

103 篇文章 1 订阅
89 篇文章 0 订阅

题目描述

兰博教训提莫之后,然后和提莫讨论起约德尔人,谈起约德尔人,自然少不了一个人,那 就是黑默丁格------约德尔人历史上最伟大的科学家. 提莫说,黑默丁格最近在思考一个问题:黑默丁格有三个炮台,炮台能攻击到距离它R的敌人 (两点之间的距离为两点连续的距离,例如(3,0),(0,4)之间的距离是5),如果一个炮台能攻击 到敌人,那么就会对敌人造成1×的伤害.黑默丁格将三个炮台放在N*M方格中的点上,并且给出敌人 的坐标. 问:那么敌人受到伤害会是多大?

输入描述:

第一行9个整数,R,x1,y1,x2,y2,x3,y3,x0,y0.R代表炮台攻击的最大距离,(x1,y1),(x2,y2), (x3,y3)代表三个炮台的坐标.(x0,y0)代表敌人的坐标.

输出描述:

输出一行,这一行代表敌人承受的最大伤害,(如果每个炮台都不能攻击到敌人,输出0×)

import java.io.BufferedReader;
import java.io.InputStreamReader;


public class Main {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String s;

		while ((s = br.readLine()) != null) {

			String c[] = s.split(" ");

			int r = Integer.parseInt(c[0]);// 炮塔攻击范围
			int ax = Integer.parseInt(c[7]);// 敌人x坐标
			int ay = Integer.parseInt(c[8]);// 敌人y 坐标

			int max = 0;// 被攻击次数

			for (int i = 0; i < 6; i = i + 2) {

				int temp0 = (int) Math.pow((ax - Integer.parseInt(String.valueOf(c[i + 1]))), 2);// 第i个炮塔的x坐标
				int temp1 = (int) Math.pow((ay - Integer.parseInt(String.valueOf(c[i + 2]))), 2);// 第i个炮塔的y坐标
				int temp2 = temp0 + temp1;// (x-x0)^2+(y-y0)^2
				double temp = Math.sqrt(temp2);

				// System.out.println();
				if (temp <= r)// 敌人如果在炮塔攻击范围内则敌人被攻击
					max++;// 更新敌人被轰炸次数

			}

			System.out.println(max + "x");

		}

	}

}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值