LightOJ - 1008--Fibsieve`s Fantabulous Birthday (找规律)

Posted zznu17-091041

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LightOJ - 1008--Fibsieve`s Fantabulous Birthday (找规律)相关的知识,希望对你有一定的参考价值。

题目描述:按照题目所给的顺序填充排列自然数,给你一个n,输出n在这个特殊序列中所在的坐标。

思路:一道找规律的题,数据的排列可以类似的看做一个蛇形路段,每一个对勾的拐点就是一个完全平方数,并且开方数刚好就是偶数行的横向坐标或者奇数行的纵坐标,然后再次观察可找到每个对勾的拐角点(也就是说图形的对角线就是本行的完全平方数减去上一行的行数就行),最后根据对角线的位置可以确定n的另外一个坐标。(估计你肯定看不下去,还是看代码吧!)

需要注意的一点就是数据范围别用 int 就行。

技术分享图片
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <queue>
#include <stack>
#define LL long long
using namespace std;
int main()
{
    LL T,i,j,n,m,len=1;
    double ans;
    scanf("%lld",&T);
    while(T--)
    {

        scanf("%lld",&n);
        printf("Case %lld: ",len++);
        ans=sqrt(n);
        m=(LL)ans;
        if(ans>m)
            m++;
        LL k=m*m-m+1;
        if(m%2>0)
        {
            if(n<k)
                printf("%lld %lld\n",m,m-(k-n));
            else
                printf("%lld %lld\n",m-(n-k),m);
        }
        else
        {
            if(n>k)
                printf("%lld %lld\n",m,m-(n-k));
            else
                printf("%lld %lld\n",m-(k-n),m);
        }
    }
    return 0;
}
View Code

后记:最怕的就是找规律,刚开始就是被那张图给吓到了,英语也不好,看不懂题的意思,所以比较怵找规律的题。还是继续努力吧!!!

以上是关于LightOJ - 1008--Fibsieve`s Fantabulous Birthday (找规律)的主要内容,如果未能解决你的问题,请参考以下文章

lightoj 1234

(状压) Marriage Ceremonies (lightOJ 1011)

毒瘤阅读题 LightOJ - 1220

LightOJ - 1020 Childhood Game (博弈)

LightOJ - 1148 Mad Counting(坑)

LightOJ - 1214 Large Division(同余)