More actions
imported>Unknown No edit summary |
(Repair batch-0001 pages from live compare) |
||
| Line 15: | Line 15: | ||
void Calculate(int& x, int& y, int remain) | void Calculate(int& x, int& y, int remain) | ||
{ | { | ||
const int PLUS_X | const int PLUS_X[4] = {+0, -1, +1, +0}; | ||
const int PLUS_Y | const int PLUS_Y[4] = {+1, +0, +0, -1}; | ||
int endNumber = x - 1; | int endNumber = x - 1; | ||
int gab = 0; | int gab = 0; | ||
| Line 29: | Line 29: | ||
return; | return; | ||
x += PLUS_X | x += PLUS_X[j]; | ||
y += PLUS_Y | y += PLUS_Y[j]; | ||
} | } | ||
} | } | ||
Latest revision as of 23:56, 26 March 2026
== AntOnAChessboard/조현태 ==
소감 및 느낀점
그냥
소스
#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;
}