寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C++ #Volume0 - 0010 : Circumscribed Circle of a Triangle

Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。

・問題 "Circumscribed Circle of a Triangle"
https://onlinejudge.u-aizu.ac.jp/problems/0010
・外接円
僕が作成、提出したコードは、以下のとおりです。

・Aizu Online Judge in C++ #Volume0 - 0010 : Circumscribed Circle of a Triangle
/*
Aizu Online Judge in C++ #Volume0 - 0010 : Circumscribed Circle of a Triangle
 https://onlinejudge.u-aizu.ac.jp/problems/0010
 提出コードの解答例
 https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n;
    cin>>n;
    while(n--){
        double x1,y1,x2,y2,x3,y3;
        cin>>x1>>y1>>x2>>y2>>x3>>y3;
        double a,b,c,d,e,f,px,py,r;
        a=2.0*(x2-x1);
        b=2.0*(y2-y1);
        c=x1*x1+y1*y1-x2*x2-y2*y2;
        d=2.0*(x3-x1);
        e=2.0*(y3-y1);
        f=x1*x1+y1*y1-x3*x3-y3*y3;
        px=(b*f-c*e)/(a*e-b*d);
        py=(c*d-a*f)/(a*e-b*d);
        r=sqrt((px-x1)*(px-x1)+(py-y1)*(py-y1));
        printf("%.3lf %.3lf %.3lf\n",px,py,r);
    }
    return 0;
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/