赛码网编程练习(四)

黑默丁格的炮台

题目描述

兰博教训了提莫之后,然后和提莫讨论起约德尔人,谈起约德尔人,自然少不了一个人,那就是黑默丁格——约德尔人历史上最伟大的科学家。

提莫说,黑默丁格最近在思考一个问题:黑默丁格有三个炮台,炮台能攻击到距离它R的敌人,(两点之间的距离为两点连线的距离,例如(3,0)和(0,4)之间的距离是5),如果一个炮台能攻击到敌人,那么会对敌人造成1X的伤害。黑默丁格将三个炮台放在N*M方格中的点上,并且给出敌人的坐标。

问:那么敌人受到伤害会是多大?

输入:第一行9个整数,R,x1,y1,x2,y2,x3,y3,x0,y0。(0 <= R,x1,y1,x2,y2,x3,y3,x0,y0 <= 100) R 代表炮台攻击的最大距离,(x1,y1), (x2,y2), (x3,y3)代表三个炮台的坐标。(x0,y0)代表敌人的坐标。

输出:

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

样例输入

1 1 1 2 2 3 3 1 2

样例输出

2X

此题比较简单,这里直接给出代码:

#include"stdafx.h"
#include<stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;
typedef struct cannon{
    int x, y;
    int R;
}Cannon;
typedef struct target{
    int x, y;
}Target;
double calculate_dis(Cannon m, Target n){
    double dist = sqrt((m.x - n.x)*(m.x - n.x) + (m.y - n.y)*(m.y - n.y));
    return dist;
}
int main()
{
    Cannon a, b, c;
    Target d;
    int i=0;
    int R;
    int cnt=0;
    int data[9];
    while (scanf_s("%d",&data[i]) != EOF&& i<8){
        i++;
    }

    R = data[0];
    a.R = R;
    a.x = data[1];
    a.y = data[2];
    b.R = R;
    b.x = data[3];
    b.y = data[4];
    c.R = R;
    c.x = data[5];
    c.y = data[6];
    d.x = data[7];
    d.y = data[8];
    double dist_ad = calculate_dis(a, d);
    double dist_bd = calculate_dis(b, d);
    double dist_cd = calculate_dis(c, d);
    if (dist_ad <= R) cnt++;
    if (dist_bd <= R)cnt++;
    if (dist_cd <= R)cnt++;
    printf("%dX\n", cnt);
}
时间: 2024-10-05 23:39:24

赛码网编程练习(四)的相关文章

赛码网的一道百度编程题

最近偶尔接触到这个赛码网,看了百度的一道编程题,于是尝试了一下,发现虽然天天写代码实现这个居然花了我好长时间,仍然没有通过全部案例.目前给的通过率是83% 题目如下: 小B最近对电子表格产生了浓厚的兴趣,她觉得电子表格很神奇,功能远比她想象的强大.她正在研究的是单元格的坐标编号,她发现表格单元一般是按列编号的,第1列编号为A,第2列为B,以此类推,第26列为Z.之后是两位字符编号的,第27列编号为AA,第28列为AB,第52列编号为AZ.之后则是三位.四位.五位--字母编号的,规则类似. 表格单

赛码网 5.12周考

本来都不想写下去了,后来想想,还是写写吧!以后回过头来看看,就可以说,哦,那些时间去做这个了! 下面步入正题. 赛码网 5.12周考 题目挺难的,反正我2道题目都没有做出来,官网上也没有贴出来答案,就只好自己去找了. 1. 暴力搜索肯定是不行的,时间复杂度很高,只好找一种数个数的方法,没有想到. 题解链接:http://krydom.com/bzoj1801/ 解释的应该很详细,但是我有一点疑问, 放2个到一个空列上 与 放一个到只有一个的列上,另一个放到空列上, 这两种的转移方式 应该是不同的

赛码网算法: 上台阶 ( python3实现 、c实现)

上台阶 题目描述 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?注:规定从一级到一级有0种走法. 输入输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数.样例输入223输出对于每个测试实例,请输出不同走法的数量.样例输出12时间限制C/C++语言:2000MS其它语言:4000MS 内存限制C/C++语言:65537KB其它语言:589825KB

赛码网算法:认老乡

最近在赛码网上做算法题,看到这样一道题,经过不断的学习,最后解决了.把我的思想和代码给大家分享一下~ 认老乡 题目描述大学的同学来自全国各地,对于远离家乡步入陌生大学校园的大一新生来说,碰到老乡是多么激动的一件事,于是大家都热衷于问身边的同学是否与自己同乡,来自新疆的小赛尤其热衷.但是大家都不告诉小赛他们来自哪里,只是说与谁同乡,从所给的信息中,你能告诉小赛有多少人确定是她的同乡吗? 输入每个测试实例首先包括2个整数,N(1 <= N <= 1000),M(0 <= M <= N*

赛码网-研究生考试

研究生考试 题目描述 欢迎大家参加奇虎360 2016校招在线招聘考试,首先预祝大家都有个好成绩! 我相信参加本次在线招聘考试的有不少研究生同学.我们知道,就计算机相关专业来说,考研有4门科目,分别是政治(满分100分),英语(满分100分),数学(满分150分)和专业课(满分150分). 某校计算机专业今年录取研究生的要求是:政治.英语每门课成绩不低于60分,数学和专业课不低于90分,总成绩不低于310分.并且规定:在满足单科以及总成绩最低要求的基础上,350分以上(含350分)为公费(Gon

赛码网-约会

约会 题目描述 Bob和Alice有个约会,一大早Bob就从点(0,0)出发,前往约会地点(a,b).Bob没有一点方向感,因此他每次都随机的向上下左右四个方向走一步.简而言之,如果Bob当前在(x,y),那么下一步他有可能到达(x+1,y), (x-1,y), (x,y+1), (x,y-1).很显然,当他到达目的地的时候,已经很晚了,Alice早已离去.第二天,Alice质问Bob为什么放她鸽子,Bob说他昨天花了s步到达了约会地点.Alice怀疑Bob是不是说谎了.你能否帮她验证一下? 输

赛码网算法: 格子游戏

格子游戏 题目描述 有n个格子,从左到右放成一排,编号为1-n.共有m次操作,有3种操作类型:1.修改一个格子的权值,2.求连续一段格子权值和,3.求连续一段格子的最大值.对于每个2.3操作输出你所求出的结果. 输入输入第一行两个整数,n表示格子个数,m表示操作次数,n和m中间用空格隔开:接下来输入n行,每行一个整数表示一个格子的权值接下来输入m行,每行有三个整数,中间用空格隔开:第一个是选择的操作类型1-3,第二和第三个整数是操作格子的编号.样例输入3 37892 1 33 1 32 1 2输

赛码网-1

公交车乘客 题目描述 一个公交车经过n个站点,乘客从前门上车,从后门下车. 现在统计了在第i个站,下车人数a[i],以及上车人数b[i]. 问公交车运行时候车上最多有多少乘客 输入 第一行读入一个整数n(1<=n<=100),表示有n个站点 接下来n行,每行两个数值,分别表示在第i个站点下车人数和上车人数 样例输入 4 0 3 2 5 4 2 4 0 输出 每组输出车上最多的乘客数目 样例输出 6 时间限制 C/C++语言:1000MS其它语言:3000MS 内存限制 C/C++语言:6553

【JavaScript】赛码网前端笔试本地环境搭建

参考:https://hoofoo.me/article/2017-04-11/%E8%B5%9B%E7%A0%81%E7%BD%91%E5%89%8D%E7%AB%AF%E7%AC%94%E8%AF%95%E6%9C%AC%E5%9C%B0%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.html print方法的实现 这个没有什么难度,只是把console.log改个名字的事情,一行代码就可以解决. var print = console.log read_line方