题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1421
简单题,将出现的数字标记下,就可以了。
数组开大会爆掉
下面是AC代码:
#include<iostream>
using namespace std;
int f[500005];
bool mark[10000000];
int main(){
f[0]=0;
int i,n;
mark[0]=true;
for(i=1;i<=500000;i++){
f[i]=f[i-1]-i;
if(f[i]<=0||mark[f[i]]==true)
f[i]=f[i-1]+i;
mark[f[i]]=true;
}
while(cin>>n&&n>0){
cout<<f[n]<<endl;
}
return 0;
}