poj Recaman's Sequence 打表

来源:互联网 发布:睡大外女生知 编辑:程序博客网 时间:2024/05/17 04:44

题意:根据a[i-1] - i 大于0 并且没出现过,或者a[i-1] - i 小于0 求出序列

思路:打表 +  hash 标记状态

#include<iostream>using namespace std;int a[500010];bool hash[50001000];//hash得开大点 不然RE int main() {    a[0] = 0;    memset(hash,0,sizeof(hash));    for (int i = 1 ; i <=500010 ; i ++) {        if (a[i-1] - i > 0 && !hash[a[i-1]-i]) {            a[i] = a[i-1] - i;            hash[a[i]] = 1;            } else {            a[i] = a[i-1] + i;            hash[a[i]] = 1;            }    }         int k;    while (scanf("%d",&k)!=EOF) {        if (k == -1) break;        printf("%d\n",a[k]);        }   }


原创粉丝点击