兰博教训提莫之后,然后和提莫讨论起约德尔人,谈起约德尔人,自然少不了一个人,那 就是黑默丁格------约德尔人历史上最伟大的科学家. 提莫说,黑默丁格最近在思考一个问题:黑默丁格有三个炮台,炮台能攻击到距离它小于等于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×)
1 1 1 2 2 3 3 1 2
2x
importjava.util.*;publicclassMain{publicstaticvoidmain(String[] args) {Scanner sc = newScanner(System.in);while(sc.hasNext()) {intr = sc.nextInt();intcount = 0;int[] x = newint[4];int[] y = newint[4];for(inti = 0; i < 4; i++) {x[i] = sc.nextInt();y[i] = sc.nextInt();}for(inti = 0; i < 3; i++) {if((x[i] - x[3])*(x[i] - x[3]) + (y[i] - y[3]) * (y[i] - y[3]) <= r * r) {count++;}}System.out.println(count + "x");}}}
#include<iostream> #include<cmath> using namespace std; int main(void){ int a[8]; int R,i; double d1,d; while(cin>>R){ int count =0; for(i=0;i<8;i++){ int x; cin>>x; a[i]=x; } for(i=0;i<5;i=i+2){ d1=(pow((a[i]-a[6]),2) + pow((a[i+1]-a[7]),2)); d=sqrt(d1); if(d <= R) count+=1; } cout<<count<<"x"<<endl; } return 0; } 通过所有测试用例
#include<stdio.h> #include<math.h> #define DIS(x,y,xx,yy) (sqrt((xx-x)*(xx-x)+(yy-y)*(yy-y))) int main(){ int x1,y1,x2,y2,x3,y3,x0,y0; float R; while(~scanf("%f%d%d%d%d%d%d%d%d",&R,&x1,&y1,&x2,&y2,&x3,&y3,&x0,&y0)){ int sum=0; if(DIS(x1,y1,x0,y0)<=R) sum++; if(DIS(x2,y2,x0,y0)<=R) sum++; if(DIS(x3,y3,x0,y0)<=R) sum++; printf("%dx\n",sum); } return 0; }
import java.util.Scanner; import java.lang.Math; public class Main { static int hurt = 0; public static void main(String[] args) { System.out.println("请输入攻击距离R和三个炮台的坐标x1, y1, x2, y2, x3, y3, 敌人的坐标x0, y0"); Scanner in = new Scanner(System.in); double R = in.nextInt(); double x1 = in.nextInt(); double y1 = in.nextInt(); double x2 = in.nextInt(); double y2 = in.nextInt(); double x3 = in.nextInt(); double y3 = in.nextInt(); double x0 = in.nextInt(); double y0 = in.nextInt(); injure(x1, y1, x0, y0, R); injure(x2, y2, x0, y0, R); injure(x3, y3, x0, y0, R); System.out.println("总共受到的伤害是:" + hurt + "X"); } public static int injure(double x, double y, double x0, double y0, double r) { if (Math.sqrt(Math.pow(x - x0, 2) + Math.pow(y - y0, 2)) <= r) { hurt++; } return hurt; } }
import java.io.*; import java.util.*;//我是第一次在线练习笔试,看了大家的才知道不能随便取名。之前取名Test编译都通不过。public class Main{ public static void main(String args[]){ Scanner reader = new Scanner(System.in); int R,x1,y1,x2,y2,x3,y3,x0,y0; //System.out.println("请输入R、x1,y1,x2,y2,x3,y3,x0,y0");
//不能随便输出东西,只能输出结果 while(reader.hasNext()){ int sum = 0;//每轮数据初始化 R = reader.nextInt(); x1 = reader.nextInt(); y1 = reader.nextInt(); x2 = reader.nextInt(); y2 = reader.nextInt(); x3 = reader.nextInt(); y3 = reader.nextInt(); x0 = reader.nextInt(); y0 = reader.nextInt(); if (getSum(x1,y1,x0,y0,R) == 1){ sum++; } if(getSum(x2,y2,x0,y0,R) == 1){ sum++; } if(getSum(x3,y3,x0,y0,R) ==1){ sum++; } System.out.println(sum+"x"); } } private static int getSum(int x,int y, int m,int n,int r){ if( ((m-x)*(m-x) +(n-y)*(n-y)) <= (r*r ) ){ return 1;//在范围内返回1 } else{ return 0;//范围外返回0 } } }
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line; while((line = br.readLine()) != null){ String[] params = line.split(" "); int R = Integer.parseInt(params[0]); int x1 = Integer.parseInt(params[1]); int y1 = Integer.parseInt(params[2]); int x2 = Integer.parseInt(params[3]); int y2 = Integer.parseInt(params[4]); int x3 = Integer.parseInt(params[5]); int y3 = Integer.parseInt(params[6]); int x0 = Integer.parseInt(params[7]); int y0 = Integer.parseInt(params[8]); int count = 0; if((x1 - x0)*(x1 - x0) + (y1 - y0)*(y1 - y0) <= R*R){ count++; } if((x2 - x0)*(x2 - x0) + (y2 - y0)*(y2 - y0) <= R*R){ count++; } if((x3 - x0)*(x3 - x0) + (y3 - y0)*(y3 - y0) <= R*R){ count++; } System.out.println(count + "x"); } } }
def damage(R,x1,y1,x2,y2,x3,y3,x0,y0): count = 0 if (x0-x1)**2 + (y0-y1)**2<=R**2: count = count + 1 if (x0-x2)**2 + (y0-y2)**2<=R**2: count = count + 1 if (x0-x3)**2 + (y0-y3)**2<=R**2: count = count + 1 print(str(count)+"x") while True: try: R,x1,y1,x2,y2,x3,y3,x0,y0 = map(int,input().strip().split()) damage(R,x1,y1,x2,y2,x3,y3,x0,y0) except: break
import math def get_distance(att, enemy, r): dis = math.sqrt((att[0] - enemy[0]) ** 2 + (att[1] - enemy[1]) ** 2) return 1 if dis <= r else 0 while True: try: R, x1, y1, x2, y2, x3, y3, x0, y0 = map(int, input().split()) enemy = (x0, y0) atts = [(x1, y1), (x2, y2), (x3, y3)] res = 0 for att in atts: res += get_distance(att, enemy, R) print('{}x'.format(str(int(res)))) except: break
import java.util.*; import java.math.*; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ int R=sc.nextInt(); int[] x=new int[3]; int[] y=new int[3]; x[0]=sc.nextInt(); y[0]=sc.nextInt(); x[1]=sc.nextInt(); y[1]=sc.nextInt(); x[2]=sc.nextInt(); y[2]=sc.nextInt(); int x0=sc.nextInt(); int y0=sc.nextInt(); int count=0; for(int i=0;i<3;i++){ if((x[i]-x0)*(x[i]-x0)+(y[i]-y0)*(y[i]-y0)<=R*R){ count++; } } System.out.println(count+"x"); } } }
package com.special.first;
import java.util.Scanner;
/**
* 网易02-炮台攻击
* 这是考察欧几里得距离公式吗??
*
* Create by Special on 2018/3/11 16:12
*/
public class Pro063 {
static int[] row = new int[4], col = new int[4];
public static boolean isInRange(double R, int x1, int y1, int x2, int y2){
return Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2) <= R;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while(input.hasNext()){
double R = input.nextInt();
R *= R;
for(int i = 0; i < 4; i++){
row[i] = input.nextInt();
col[i] = input.nextInt();
}
int count = 0;
for(int i = 0; i < 3; i++){
if(isInRange(R, row[i], col[i], row[3], col[3])){
count++;
}
}
System.out.println(count + "x");
}
}
}
#include<iostream> #include<cmath> using namespace std; int main() { int R,x1,y1,x2,y2,x3,y3,x0,y0; while(cin>>R>>x1>>y1>>x2>>y2>>x3>>y3>>x0>>y0) { int count =0; double R1=sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0)); if(R1<R) count++; double R2=sqrt((x2-x0)*(x2-x0)+(y2-y0)*(y2-y0)); if(R2<R) count++; double R3=sqrt((x3-x0)*(x3-x0)+(y3-y0)*(y3-y0)); if(R3<R) count++; cout<<count<<"x"<<endl; } return 0; }
//到三个炮台分别到敌人的距离即可 import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String[] s= sc.nextLine().split(" "); int R = Integer.parseInt(s[0]); int[] x = new int[3]; int[] y = new int[3]; x[0] = Integer.parseInt(s[1]); y[0] = Integer.parseInt(s[2]); x[1] = Integer.parseInt(s[3]); y[1] = Integer.parseInt(s[4]); x[2] = Integer.parseInt(s[5]); y[2] = Integer.parseInt(s[6]); int x0 = Integer.parseInt(s[7]); int y0 = Integer.parseInt(s[8]); int count= 0; for(int i=0;i<3;i++){//循环3次,分别算三个距离 if(Math.sqrt(Math.pow(x[i]-x0,2) + Math.pow(y[i]-y0,2)) <= R){ count++; } } System.out.println(count+"x"); } } }
// 不需要sqrt()函数,直接平方求距离即可 #include <iostream> using namespace std; int main(){ int R, x1, y1, x2, y2, x3, y3, x0, y0; while(cin >> R >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x0 >> y0){ int d12 = (x1 - x0)*(x1 - x0) + (y1 - y0)*(y1 - y0); int d22 = (x2 - x0)*(x2 - x0) + (y2 - y0)*(y2 - y0); int d32 = (x3 - x0)*(x3 - x0) + (y3 - y0)*(y3 - y0); int count = 0; if(d12 <= R*R) count ++; if(d22 <= R*R) count ++; if(d32 <= R*R) count ++; cout << count << "x" << endl; } return 0; }
#include <iostream> #include <math.h> using namespace std; int main() { int r; while(cin>>r) { int pao[3][2]; for(int i=0;i<3;i++) cin>>pao[i][0]>>pao[i][1]; int x0,y0; cin>>x0>>y0; int cc=0; for(int i=0;i<3;i++) { float dist = sqrt(float(pao[i][0]-x0)*(pao[i][0]-x0)+float(pao[i][1]-y0)*(pao[i][1]-y0)); if(dist <= r) cc++; } cout<<cc<<"x"<<endl; } }
// 直观题,没任何算法,只是初中数学 #include<iostream> #include<cmath> using namespace std; int main(void) { int R, x1, y1, x2, y2, x3, y3, x0, y0; int hurt = 0; while ( cin >> R >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x0 >> y0 ) { if ( R >= sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0)) ) ++hurt; if ( R >= sqrt((x2-x0)*(x2-x0)+(y2-y0)*(y2-y0)) ) ++hurt; if ( R >= sqrt((x3-x0)*(x3-x0)+(y3-y0)*(y3-y0)) ) ++hurt; cout << hurt << 'x' << endl; hurt = 0; } return 0; }
#include <iostream> #include <math.h> using namespace std; int check(int a, int b, int x, int y, int distant) { float dis; dis = sqrt((x-a)*(x-a) + (y-b)*(y-b)); if(dis <= (float)distant) return 1; else return 0; } int main(){ int Data[8]; int i,R,max; while(cin>>R){ max=0; for(i=0; i<8; i++) cin>>Data[i]; for(i=0; i<=4; i+=2) max+=check(Data[i], Data[i+1], Data[6], Data[7], R); cout<<max<<"x"<<endl; } return 0; }
#include<iostream>#include<cmath>#include<vector>using namespace std;intmain(){intR,x1,y1,x2,y2,x3,y3,x0,y0;while(cin>>R>>x1>>y1>>x2>>y2>>x3>>y3>>x0>>y0){doubledis;intcnt = 0;doubleR1 = sqrt(pow((x1-x0),2)+pow((y1-y0),2));doubleR2 = sqrt(pow((x2-x0),2)+pow((y2-y0),2));doubleR3 = sqrt(pow((x3-x0),2)+pow((y3-y0),2));vector<double> vr;vr.push_back(R1);vr.push_back(R2);vr.push_back(R3);for(inti = 0;i<vr.size();++i)if(vr[i]<=R)++cnt;cout<<cnt<<'x'<<endl;}return0;}