== 소감 ==
오답 잡던 도중에 친구가 소주한잔 하자고 해서.. 일단 여기까지하고~
소주 마시던 중 격좌좌표를 기하좌표로 옮기는 과정을 생략한 것이 생각나서
술자리를 파한 후 취중 개코딩..-..ㅡ;; 빙고! ㅋㄷㅋㄷ
== 소스파일 ==
~cpp
#include <iostream>
#include <cmath>
using namespace std;
int ax1,ax2,ax3,ay1,ay2,ay3;
int bx1,bx2,bx3,by1,by2,by3;
double centroid_ax, centroid_ay, centroid_bx, centroid_by;
void findPoint()
{
centroid_ax = (double)(ax1+ax2+ax3)/3;
centroid_ay = (double)(ay1+ay2+ay3)/3;
centroid_bx = (double)(bx1+bx2+bx3)/3;
centroid_by = (double)(by1+by2+by3)/3;
centroid_ax = centroid_ax + (centroid_ay/2);
centroid_ay = centroid_ay*sqrt(3.0)/2;
centroid_bx = centroid_bx + (centroid_by/2);
centroid_by = centroid_by*sqrt(3.0)/2;
}
int findRow(int x)
{
int row = ceil(sqrt(x+1)) * (-1);
return row ;
}
void findLength()
{
cout.setf(ios::fixed, ios::floatfield);
cout.setf(ios::showpoint);
cout.precision(3);
cout << sqrt(pow((centroid_bx - centroid_ax), 2) + pow((centroid_by - centroid_ay), 2)) <<endl;
}
void process(int x, int y)
{
int row_a = findRow(x);
int row_b = findRow(y);
if(row_a%2 == 0) {
if(x%2 == 0) {
ax1 = row_a;
ax2 = row_a + 1;
ax3 = row_a + 1;
} else {
ax1 = row_a + 1;
ax2 = row_a;
ax3 = row_a;
}
} else {
if(x%2 == 0) {
ax1 = row_a + 1;
ax2 = row_a;
ax3 = row_a;
} else {
ax1 = row_a;
ax2 = row_a + 1;
ax3 = row_a + 1;
}
}
if(row_b%2 == 0) {
if(y%2 == 0) {
bx1 = row_b;
bx2 = row_b + 1;
bx3 = row_b + 1;
} else {
bx1 = row_b + 1;
bx2 = row_b;
bx3 = row_b;
}
} else {
if(y%2 == 0) {
bx1 = row_b + 1;
bx2 = row_b;
bx3 = row_b;
} else {
bx1 = row_b;
bx2 = row_b + 1;
bx3 = row_b + 1;
}
}
int col_a = (x - pow((row_a+1), 2))/2;
int col_b = (y - pow((row_b+1), 2))/2;
if(row_a%2 == 0) {
if(x%2 == 0) {
ay1 = col_a+1;
ay2 = col_a;
ay3 = col_a+1;
} else {
ay1 = col_a;
ay2 = col_a;
ay3 = col_a+1;
}
} else {
if(x%2 == 0) {
ay1 = col_a;
ay2 = col_a;
ay3 = col_a +1;
} else {
ay1 = col_a +1;
ay2 = col_a;
ay3 = col_a +1;
}
}
if(row_b%2 == 0) {
if(y%2 == 0) {
by1 = col_b+1;
by2 = col_b;
by3 = col_b+1;
} else {
by1 = col_b;
by2 = col_b;
by3 = col_b+1;
}
} else {
if(y%2 == 0) {
by1 = col_b;
by2 = col_b;
by3 = col_b+1;
} else {
by1 = col_b+1;
by2 = col_b;
by3 = col_b+1;
}
}
findPoint();
findLength();
}
int main()
{
int x, y;
while (cin >> x >> y)
process(x, y);
return 0;
}