10/04/24 10:03:06
%を忘れた人のため:その2
#include <stdio.h>
int rem3is0[16]={1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1};
int rem5is0[16]={1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1};
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 ) {
int j = compact(i);
if( rem3is0[j] & rem5is0[j] ) {
printf( "FizzBuzz " );
}
else if( rem3is0[j] ) {
printf( "Fizz " );
}
else if( rem5is0[j] ) {
printf( "Buzz " );
}
else {
printf( "%i ", i );
}
}
}