Description
The recaman's sequence is defined by a0 = 0; for M> 0, a m = a m −1 −m if the rsulting a m is positive and not already in the sequence, otherwise a m = am −1 + M.
The first few numbers in the recaman's sequence is 0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9...
Given K, your task is to calculate a K.
Input
The input consists of several test cases. Each line of the input contains an integer k where 0 <= k <= 500000.
The last line contains an integer −1, which shoshould not be processed.
Output
For each K given in the input, print one line containing a K to the output.
Sample Input
710000-1
Sample output
2018658
Find the k Number of recaman's sequence.
Note: There is nothing to pay attention.
AC code:
1 #include<stdio.h> 2 int d[600000],vis[9000000]; 3 int main() 4 { 5 int a,b,i,j,n; 6 d[0]=0; 7 for(i=0;i<500005;i++) 8 { 9 if(d[i-1]-i<0||vis[d[i-1]-i]==1)10 d[i]=d[i-1]+i;11 else if(!vis[d[i-1]-i])12 d[i]=d[i-1]-i;13 vis[d[i]]=1;14 }15 while(scanf("%d",&n))16 {17 if(n==-1)18 break;19 printf("%d\n",d[n]);20 }21 }