Function to express K as sum of several N_bonacci numbers
static void N_bonacci_nums ( long n , long k ) { N_bonacci [ 0 ] = 1 ; for ( int i = 1 ; i <= 50 ; ++ i ) { for ( int j = i - 1 ; j >= i - k && j >= 0 ; -- j ) N_bonacci [ i ] += N_bonacci [ j ] ; } List < long > ans = new List < long > ( ) ; for ( int i = 50 ; i >= 0 ; -- i ) if ( n - N_bonacci [ i ] >= 0 ) { ans . Add ( N_bonacci [ i ] ) ; n -= N_bonacci [ i ] ; } if ( ans . Count == 1 ) ans . Add ( 0 ) ; Console . WriteLine ( ans . Count ) ; for ( int i = 0 ; i < ans . Count ; ++ i ) Console . Write ( ans [ i ] + " , ▁ " ) ; }