Consider the Fibonacci Seies 1, 2, 3, 5, 8, 13.....
Now consider a Fibonacci binary number system of numbers where numbers are considered as sum of Fibonacci numbers
Ex. 10 can be written as 8+2=>10010 and 17 can be written as 13+3+1 => 100101. This representation is similar to binary representation. Instead of powers of 2, Fibonacci numbers are used.
The question was, given n find all possible representations of n in Fibonacci binary number system.
as 10=8+2=>10010
also 10=5+3+2=>1110
Now consider a Fibonacci binary number system of numbers where numbers are considered as sum of Fibonacci numbers
Ex. 10 can be written as 8+2=>10010 and 17 can be written as 13+3+1 => 100101. This representation is similar to binary representation. Instead of powers of 2, Fibonacci numbers are used.
The question was, given n find all possible representations of n in Fibonacci binary number system.
as 10=8+2=>10010
also 10=5+3+2=>1110
#include <stdio.h> #include <string.h> void printSol(int* sol, int size) { int i; for( i = 0; i <= size; ++i ) printf("%d",sol[i]); printf("\n"); } void binaryFiboUtil(int* sol, int depth, int num,int* arr, int size) { if(depth < 0 || num == 0){ if(num == 0) printSol(sol,size); return ; } else { if(arr[depth] <= num) { sol[depth] = 1; binaryFiboUtil(sol,depth-1,num-arr[depth],arr,size); //sol[depth] = 0; } else { sol[depth]=0; binaryFiboUtil(sol,depth-1,num,arr,size); } } } void binaryFibo(int num) { if(num <= 0 ) return; int a, b, c, arr[100], top = -1; a = 0; b = 1; c = a+b; while( c <= num ) { arr[++top] = c; a = b; b = c; c = a+b; } int sol[top+1]; memset(sol,0,sizeof(sol)); binaryFiboUtil(sol,top,num,arr,top); } int main() { int num; scanf("%d", &num); binaryFibo(num); return 0; }
Thanks to a reader named "coder" for posting the code.
No comments :
Post a Comment