poj解题报告——2081

来源:互联网 发布:崩坏学园2淘宝代充 编辑:程序博客网 时间:2024/04/30 13:16

        题意:第m个位置的数是根据第m-1位置的数推出来的如果a[m-1]-m>0,并且a[m-1]-m在前面的序列中没有出现过那么a[m] = a[m-1]-m否则a[m] = a[m-1]+m

代码如下

#include<stdio.h>#include<string.h>#define N 500010int ch[N];int vis[N*10];void init(){int i,j;memset(vis,0,sizeof(vis));memset(ch,0,sizeof(ch));vis[0]=vis[1]=vis[3]=1;ch[1]=1;for(i=2;i<N;i++){ch[i]=ch[i-1]-i;if(ch[i]<1||vis[ch[i]]==1)ch[i]=ch[i-1]+i;vis[ch[i]]=1;}}void main(){int k;init();while(scanf("%d",&k)!=EOF){if(k==-1)break;printf("%d\n",ch[k]);}}


0 0
原创粉丝点击