int compact( unsigned int n ) { n = ( n & 0x0f0f0f0f ) + ((n>>4)&0x0f0f0f0f); n = ( n & 0x00ff00ff ) + ((n>>8)&0x00ff00ff); n = ( n & 0x0000ffff ) + ((n>>16)&0x0000ffff); return ( n > 15 )? compact(n): n; }
#define N 100 int main( ) { unsigned int i; for( i = 1; i <= N; ++i )printf( fz[compact(i)],i); }