您的位置:首页 > 编程语言 > C语言/C++

July 17th 模拟赛C T3 Circle Solution

2016-07-18 10:41 267 查看
空降题目处(外网)

点我点我点我

空降题目处(内网)

点我点我点我

Description

给定三个点(不共线)的坐标,要求以这三个点为圆心做三个圆,圆两两不相交,不包含,问三个圆的直径和最大为多少。

Input

第一行为测试数据组数t。接下来t行每行6个数为坐标。

Output

T行,每行一个整数表示直径和(取下整)。

Solution

若直径和要尽量大,则三圆应尽量贴合,即求三点所成三角形周长,不予证明。(自行脑补)

Code

C++

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;

int t;
long long x[4],y[4];

long long sqr(long long x)
{
return x*x;
}

int main()
{
scanf("%d",&t);
for (int i=1;i<=t;i++)
{
for (int j=1;j<=3;j++)
{
scanf("%lld%lld",&x[j],&y[j]);
}
printf("%lld\n",(long long)(sqrt(sqr(x[1]-x[2])+sqr(y[1]-y[2]))+sqrt(sqr(x[3]-x[2])+sqr(y[3]-y[2]))+sqrt(sqr(x[1]-x[3])+sqr(y[1]-y[3]))));
}
}


Pascal

var
t,i,j:longint;
x,y:array [1..3] of double;

begin

readln(t);
for i:=1 to t do
begin
for j:=1 to 3 do
read(x[j],y[j]);
writeln(trunc(sqrt(sqr(abs(x[1]-x[2]))+sqr(abs(y[1]-y[2])))+sqrt(sqr(abs(x[3]-x[2]))+sqr(abs(y[3]-y[2])))+sqrt(sqr(abs(x[1]-x[3]))+sqr(abs(y[1]-y[3])))));
end;

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ Pascal JZOJ