소감

2006-02-04 Accepted 0.016 Minimum

코드

~cpp
// 10182 - Bee Maja
#include <iostream>
using namespace std;

#define MAXN 100000
typedef struct {
	int x;
	int y;
}Coord;

Coord cord[MAXN+1];

void set_coord(int& n, const Coord curCoord)
{
	if (n <= MAXN)
		cord[n++] = curCoord;
}

void go_down(const int len, int& n, Coord& curCoord)
{
	for (int i = 0; i < len; i++)
	{
		curCoord.y++;
		set_coord(n,curCoord);
	}
}

void go_left_up(const int len, int& n, Coord& curCoord)
{
	for (int i = 0; i < len; i++)
	{
		curCoord.x--;
		set_coord(n,curCoord);
	}
}

void go_up(const int len, int& n, Coord& curCoord)
{
	for (int i = 0; i < len; i++)
	{
		curCoord.y--;
		set_coord(n,curCoord);
	}
}

void go_right_up(const int len, int& n, Coord& curCoord)
{
	for (int i = 0; i < len; i++)
	{
		curCoord.x++;
		curCoord.y--;
		set_coord(n,curCoord);
	}
}

void go_right_down(const int len, int& n, Coord& curCoord)
{
	for (int i = 0; i < len; i++)
	{
		curCoord.x++;
		set_coord(n,curCoord);
	}
}

void go_left_down(const int len, int& n, Coord& curCoord)
{
	for (int i = 0; i < len; i++)
	{
		curCoord.x--;
		curCoord.y++;
		set_coord(n,curCoord);
	}
}

void cruise_comb(const int len, int& n, Coord& curCoord)
{
	go_down(1, n, curCoord);
	go_left_down(len-1, n, curCoord);
	go_left_up(len, n, curCoord);
	go_up(len, n, curCoord);
	go_right_up(len, n, curCoord);
	go_right_down(len, n, curCoord);
	go_down(len, n, curCoord);
}

void convert_coord()
{
	int length = 1;
	Coord curCoord;
	int n = 2;
	curCoord.x = curCoord.y = 0;
	cord[1].x = cord[1].y = 0;
	while (n <= MAXN)
	{
		cruise_comb(length++, n, curCoord);
	}
}

inline void show(int in)
{
	cout << cord[in].x << " " << cord[in].y << endl;
}

int main()
{
	int in;
	convert_coord();
	while (cin >> in)
		show(in);
	return 0;
}
Retrieved from http://wiki.zeropage.org/wiki.php/BeeMaja/문보창
last modified 2021-02-07 05:22:35