题解 SP3934 【MRECAMAN - Recaman’s Sequence】

这题感觉没有省选-吧,我要去入门的都能AC

我采取的是递归读入+map判断重复,具体代码如下:

#include <cstdio>//比cin快
#include <map>//map头文件
using namespace std;//标准命名空间

map <int, bool> mp;//创造map映射

int a[500005];//数组

void input()
{
    int k;
    scanf("%d", &k);
    if(k == -1)//看样例,-1结束
    {
        return ;
    }
    else
    {
        printf("%d\n", a[k]);
        input();//递归
    }
}

int main()
{
    //先预处理一遍
    a[0] = 0;
    for(int i = 1; i <= 500000; i++)
    {
        if(a[i - 1] - i > 0 && !mp[a[i - 1] - i])//按照题意
        {
            a[i] = a[i - 1] - i;
        }
        else
        {
            a[i] = a[i - 1] + i;
        }
        mp[a[i]] = true;//将a[i]变为true
    }
    input();//递归读入和输出答案
    return 0;
}

求过

posted @ 2020-10-05 20:49  HappyBobb  阅读(4)  评论(0)    收藏  举报  来源