题目链接:
题意:
CODE:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
long long n;
void test()
{
for(int i=1;i<=100;i++)
{
int k=((int)(sqrt(1+4*(i-1)/3))-1)/2;
printf("%d->%d s=%d ss=%d\n ",i,k,2*k+1,3*k*(k+1)+1);
}
}
int main()
{
#ifdef LOCAL
//freopen("in.txt","r",stdin);
#endif
//test();
while(~scanf("%Id",&n))
{
if(n==0)
{
printf("0 0\n");
continue;
}
long long k=((long long)(sqrt(1+4*(n-1)/3))-1)/2;
long long s=k*2+1;//区间起点横坐标
//printf("3*k*(k+1)+1=%Id n=%Id\n",3*k*(k+1)+1,n);
long long p=n-(3*k*(k+1)+1);//在这个区间走了几步,3*k*(k+1)+1是区间起点走的步数
//printf("k=%Id s=%Id ss=%Id p=%Id\n",k,s,3*k*(k+1)+1,p);
if(p>=0&&p<=k) printf("%Id %Id\n",s-p,2*p+2);
else if(p<=2*k+1) printf("%Id %Id\n",s-2*p+k,2*k+2);
else if(p<=3*k+2) printf("%Id %Id\n",s-p-k-1,6*k+4-2*p);
else if(p<=4*k+3) printf("%Id %Id\n",s+p-7*k-5,-2*p+6*k+4);
else if(p<=5*k+4) printf("%Id %Id\n",s+2*p-11*k-8,-2*k-2);
else printf("%Id %Id\n",s+p-6*k-4,2*p-12*k-10);
}
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- ryyc.cn 版权所有 湘ICP备2023022495号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务