IT民工
加油!

这是一道要打表的递推题。注意数组开得足够大就行。

 

#include<cstdio>
#include<cstring>
#include<cstdlib>

bool vis[4000000] = {false};//记录一个数是否出现在结果中
int a[500005];

void init()
{
    a[0] = 0;
    for( int i = 1; i <= 500000; i ++)
    {
        if( a[i - 1] - i > 0 && !vis[ a[i - 1] - i])
            a[i] = a[i - 1] - i;
        else
            a[i] = a[i - 1] + i;
        vis[ a[i] ] = true;
    }
}

int main()
{
    int k;
    init();
    while( scanf( "%d", &k), k != -1)
    {
        printf( "%d\n", a[k]);
    }
    return 0;
}

 

 

 

posted on 2012-04-11 10:02  找回失去的  阅读(222)  评论(0编辑  收藏  举报