給你一個棋盤 輸入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;
}