您的位置:首页 > 产品设计 > UI/UE

poj 2081 Recaman's Sequence

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

#include<cstdio>
#include<cstring>
#include<iostream>
#define N 500001
using namespace std;
long long arr
;
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: