给你一个棋盘 输入n,找出n在第几行第几列。
可以发现对角线的数是有规律增长的,那么只要找到当前输入的n在对角线的第几个数上,就可以得出行数和列数。
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long ll;
int main()
{
//freopen("a.txt","r",stdin);
ll n,a,b;
while(~scanf("%lld",&n)&&n)
{
a=1;b=2;
while(n>=a&&abs(n-a)>=(b/2))
{
a=a+b;
b+=2;
}
b/=2;
if(b&1)
{
if(a>=n) printf("%lld %lld\n",b,b-(a-n));
else printf("%lld %lld\n",b-(n-a),b);
}
else
{
if(a>=n) printf("%lld %lld\n",b-(a-n),b);
else printf("%lld %lld\n",b,b-(n-a));
}
}
return 0;
}