//
一次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; }
转载请注明原文地址: https://ibbs.8miu.com/read-30410.html