U E D R , A S I H C RSS

Ant OnAChessboard/조현태

소감 및 느낀점

그냥

소스

~cpp
#include <iostream>

using namespace std;

int GetFunctionY(int x)
{
	//4n^2 - 8n + 5
	return (4 * x * x) - (8 * x) + 5;
}

void Calculate(int& x, int& y, int remain)
{
	const int PLUS_X[4] = {+0, -1, +1, +0};
	const int PLUS_Y[4] = {+1, +0, +0, -1};
	int endNumber = x - 1;
	int gab = 0;
	for (register int num = 0; num < 2; ++num)
	{
		for (register int j = 0 + gab; j < 2 + gab; ++j)
		{
			for (register int i = 0; i < endNumber; ++i)
			{
				--remain;
				if (0 == remain)
					return;

				x += PLUS_X[j];
				y += PLUS_Y[j];
			}
		}

		--remain;
		if (0 == remain)
			return;

		++y;
		++endNumber;
		gab = 2;
	}
}

void main()
{
	int inputNumber;
	cin >> inputNumber;
	int pointX = 1;
	int pointY = 1;
	register int i = 1;

	if (1 == inputNumber)
	{
		cout << "(1, 1)" << endl;
		return;
	}

	while(1)
	{
		if (inputNumber < GetFunctionY(i))
		{
			pointX = (i - 2) * 2 + 1;
			break;
		}
		++i;
	}
	Calculate(pointX, pointY, inputNumber - GetFunctionY(i - 1) + 1);
	cout << "(" << pointX << ", " << pointY << ")" << endl;
}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0072 sec