http://poj.org/problem?id=2081
打表.
1 #include <stdio.h> 2 int numbers[500001]; 3 bool flags[500001*10]={false}; 4 int main() 5 { 6 int i; 7 numbers[0]=0; 8 flags[0]=true; 9 numbers[1]=1; 10 flags[1]=true; 11 for(i=2;i<=500000;i++) { 12 if(numbers[i-1]-i>0&&(flags[numbers[i-1]-i]==false)) { 13 numbers[i]=numbers[i-1]-i; 14 flags[numbers[i]]=true; 15 } else { 16 numbers[i]=numbers[i-1]+i; 17 flags[numbers[i]]=true; 18 } 19 } 20 int k; 21 while(scanf("%d",&k)!=EOF) { 22 if(k==-1) return 0; 23 printf("%d\n",numbers[k]); 24 } 25 return 0; 26 } 27