PS: 此题目可以用DP解决,如果打表时间会很快。
#include <iostream> #include <cstring> #include <cstdio> #include <set> #include <algorithm> using namespace std; const int maxn = 500100; //Accepted 19140K 2454MS C++ 648B 2014-04-10 11:11:04 int d[maxn]; set<int> s; void dp() { s.clear(); s.insert(0); d[0] = 0; for(int i = 1; i <= 500001; i++) { d[i] = d[i-1] - i; if(d[i]>0 && s.count(d[i])==0) { s.insert(d[i]); continue; } else { d[i] = d[i-1] + i; s.insert(d[i]); } } } int main() { dp(); int n; while(scanf("%d", &n)==1 && n!=-1) { printf("%d\n", d[n]); } return 0; }
POJ2081 Recaman's Sequence,布布扣,bubuko.com
原文:http://blog.csdn.net/achiberx/article/details/23341087