POJ——2081

来源:互联网 发布:c语言编的小游戏 编辑:程序博客网 时间:2024/06/04 18:21

//我承认此题是一道超级水题,但是我WA了N次,此题很坑,需谨慎,要考虑,初始化要注意,另外,a[i]的值可能大于max.,所以,要开大一点的数组来初始化。//

AC代码:

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define max 500005#define MAX 8000005int a[max];int vis[MAX];int main(){    int i;    memset(vis,0,sizeof(vis));    a[0]=0;    vis[0]=1;    for(i=1;i<=max;i++)    {        if(a[i-1]-i<0)        {            a[i]=a[i-1]+i;        }        else        {            if(vis[a[i-1]-i])            {                a[i]=a[i-1]+i;            }            else            {                a[i]=a[i-1]-i;            }        }        vis[a[i]]=1;    }    int n;    while(scanf("%d",&n)!=EOF&&(n!=-1))    {        printf("%d\n",a[n]);    }    return 0;}

0 0
原创粉丝点击