现在的位置: 首页 > 综合 > 正文

poj 2081 Recaman’s Sequence

2013年04月26日 ⁄ 综合 ⁄ 共 427字 ⁄ 字号 评论关闭

难道真就是这样暴力出来的,有什么神级解法么?我竟然连Am的范围都是自己随便猜的一个10000000就直接过了,有好解法的请联系我,求赐教。

#include<cstdio>
#include<cstring>
#include<iostream>
#define N 500001
using namespace std;
long long arr[N];
bool vis[10000001];
void ini()
{
    memset(vis,false,sizeof(vis));
    arr[0] = 0;
    vis[0] = true;
    for(int i=1;i<N;++i)
    {
       long long x = arr[i-1] - i;
       if(x>0&&!vis[x])
         arr[i] = x;
       else
        arr[i] = arr[i-1] + i;
        vis[arr[i]] = true;
    }
}

int main(void)
{
    int m;
    ini();
    while(cin>>m,m!=-1)
    {
        cout<<arr[m]<<endl;
    }

    return 0;
}

抱歉!评论已关闭.