//一次ac 算法很简单,题目已经给出,b[]是作为标记已有数用的,这样不用去搜,以空间换取时间 //zoj 2421 #include <stdio.h>#include <stdlib.h>#include<string.h>#define MAX 500000#define MAXA 5000000 int a[MAX],b[MAXA];int main()...{ int i; a[0] = 0; memset(b,0,MAXA); for(i = 1; i < MAX; i ++ ) ...{ a[i] = a[i - 1] - i; if(a[i] <= 0 || b[a[i]]) ...{ a[i] = a[i - 1] + i; } b[a[i]] = 1; } int n; while(scanf("%d", &n),n!= -1) ...{ printf("%d ",a[n]); } system("pause"); return 0; }