题目:https://codeforces.com/problemset/problem/1560/C
题解:
我们定义x,y。
我们可以明显得知最左边的一列是x的次方形式的,我们首先就要先找出k在那一个外围。
我们再判断他是否在这一行上,对x的次方进行 0~x的减法运算 而后对y进行改变。
如果不在,则再向上进行判断对x进行改变。
#include <iostream>
using namespace std;
typedef long long int ll;
int main()
{
int t;
cin >> t;
while (t--)
{
int k;
cin >> k;
int x=1, y=1;
for (int i = 1;;i++)
{
if (k - (i * i) <= 0)
{
x = i;
break;
}
}
bool xxx = 1;
for (int i = 0; i < x; i++)
{
if (k == x * x - i)
{
y = i+1;
xxx = 0;
break;
}
}
if (xxx)
{
y = x;
for (int i = 0; i < x; i++)
{
if (k == x * x - x-i)
{
x = x - i - 1;
break;
}
}
}
cout << x << " " << y << endl;
}
}