POJ 2081 Recaman's Sequence

 

 

题目链接:http://poj.org/problem?id=2081

 

分析:就是要求一系列数字,如果a[i-1]-i>0  则:ai=a[i-1]-i,否则的话  ai=a[i-1]+i,同时要满足这些数字在之前没有出现过。

 

源代码:

//POJ 2081  AC

#include <iostream>

using namespace std;

int a[500010];

bool flag[3500000]={false};//如果也开个500010  运行时错误

 

void init(){

      int i,t;

      a[0]=0;

      for(i=1;i<=500000;i++){

            t=a[i-1]-i;

            if(t>0&&!flag[t]){

                  a[i]=t;

                     }

            else{

                  a[i]=a[i-1]+i;

                     }

            flag[a[i]]=true;

      }

}

int main(){

      int k;

      init();  

      while(cin>>k){

                if(k==-1) break;

 

          cout<<a[k]<<endl;   

      }

      return 0;

}


 

你可能感兴趣的:(POJ 2081 Recaman's Sequence)