列表

详情


NC201604. Audio

描述

Nancy很喜欢音乐。
她能同时分辨出三种不同的音乐。恰巧,一座城市中有三处同时有交响音乐会(音源响度相同)。但是Nancy每一场都不想错过,于是她想寻找一个地点,使得三处音乐会声音的响度相同,这样她就可以同时欣赏三场音乐会啦!
(注:假设声音传播过程中不会受障碍物作用,声音传播满足平方反比定律)

输入描述

共三行:每行两个整数x_iy_i,三点不共线。
数据满足:

输出描述

共一行:两个实数pos_x, pos_y,表示Nancy欣赏音乐会的地点(保留三位小数)

示例1

输入:

0 0
1 3
4 2

输出:

2.000 1.000

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

pypy3(pypy3.6.1) 解法, 执行用时: 51ms, 内存消耗: 18816K, 提交时间: 2020-08-18 12:04:55

x1,y1=map(float,input().split())
x2,y2=map(float,input().split())
x3,y3=map(float,input().split())

k_12=(y1-y2)/(x1-x2)
k1=-1/k_12
x_1=(x1+x2)/2
y_1=(y1+y2)/2
b1=y_1-k1*x_1

k_23=(y2-y3)/(x2-x3)
k2=-1/k_23
x_2=(x2+x3)/2
y_2=(y2+y3)/2
b2=y_2-k2*x_2

posx=(b2-b1)/(k1-k2)
posy=k1*posx+b1

print(f'{posx:.3f} {posy:.3f}')

C(clang 3.9) 解法, 执行用时: 2ms, 内存消耗: 376K, 提交时间: 2020-02-06 21:13:26

#include<stdio.h>
main()
{double x1,y1,x2,y2,x3,y3,x,y,k1,k2,x0,y0,x00,y00;
scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);
k1=(x1-x2)/(y2-y1);
k2=(x1-x3)/(y3-y1);
x0=(x1+x2)/2;
y0=(y1+y2)/2;
x00=(x1+x3)/2;
y00=(y1+y3)/2;
x=(y00-y0+k1*x0-k2*x00)/(k1-k2);
y=k1*(x-x0)+y0;
printf("%.3lf %.3lf",x,y);
 } 

Python3(3.5.2) 解法, 执行用时: 31ms, 内存消耗: 3436K, 提交时间: 2020-02-21 20:35:58

x1,y1=list(map(int,input().split()))
x2,y2=list(map(int,input().split()))
x3,y3=list(map(int,input().split()))
b = ((x1**2+y1**2-x3**2-y3**2)*(x1-x2)-(x1**2+y1**2-x2**2-y2**2)*(x1-x3))/2/((y1-y3)*(x1-x2)-(y1-y2)*(x1-x3))
a = (x1**2+y1**2-x2**2-y2**2-2*b*y1+2*b*y2)/2/(x1-x2)
print("%.3lf %.3lf"%(a,b))

C++14(g++5.4) 解法, 执行用时: 6ms, 内存消耗: 504K, 提交时间: 2020-08-18 21:40:08

#include<iostream>
using namespace std;
int main(){
	double k,l,q,w,e,a,s,d,z,x,c,v,b,n;
	cin>>q>>w>>e>>a>>s>>d;
	z = 0.5*(e*e-q*q+a*a-w*w);
	x = 0.5*(s*s-q*q+d*d-w*w);
	c = e-q;
	v = a-w;
	b = s-q;
	n = d-w;
	k = (z*n-x*v)/(c*n-v*b);
	l = (x*c-z*b)/(c*n-v*b);
	printf("%.3f %.3f",k,l);
	return 0;
} 

C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 504K, 提交时间: 2020-08-18 10:01:29

#include<iostream> 
using namespace std;int main(){double k,l,q,w,e,a,s,d,z,x,c,v,b,n;cin>>q>>w>>e>>a>>s>>d;z = 0.5*(e*e-q*q+a*a-w*w);x = 0.5*(s*s-q*q+d*d-w*w);c = e-q;v = a-w;b = s-q;n = d-w;k = (z*n-x*v)/(c*n-v*b);l = (x*c-z*b)/(c*n-v*b);printf("%.3f %.3f",k,l);return 0;}

上一题