您好,欢迎来到锐游网。
搜索
您的当前位置:首页CF 615 E Hexagons(找规律)

CF 615 E Hexagons(找规律)

来源:锐游网

题目链接:

题意:

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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务