Links to Topics Http://www.nocow.cn/index.php/Translate:USACO/hamming
/* "Bitwise operation" + "XOR operation" */
/*
Id:zhangsh35
Prog:hamming
Lang:c++
*/
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace Std;
const int maxn=64;
int HAM[MAXN];
int Tot,max,dis;
int cnt=1;
BOOL judge (int num);
#define LOCAL
int main ()
{
#ifdef LOCAL
Freopen ("Hamming.in", "R", stdin);
Freopen ("Hamming.out", "w", stdout);
#endif
cin>>tot>>max>>dis;
int i,j;
ham[0]=0;
cout<< "0";
For (I=1;i<=pow (2,max) -1;i++)
{
if (judge (i))
{
Ham[cnt++]=i;
cout<<i;
if (Cnt==tot)
{
cout<<endl;
Break
}
else if (! ( CNT%10))
cout<<endl;
Else
cout<< "";
}
}
}
BOOL judge (int num)
{
int I,tot;
BOOL Ok=true;
for (i=0;i<cnt;i++)
{
tot=0;
int Data=num xor ham[i];
while (data)
{
tot++;
data&=data-1;//calculates a number of the bits in the number of 1, the knowledge has risen.
}
if (Tot<dis)
{
Ok=false;
Break
}
}
return OK;
}
Section 2.1.Hamming Codes (Hamming)