2013年11月10日 星期日

[USACO] 2-1-5 Hamming Codes


/*
ID: 551100k1
LANG: C++
TASK: hamming
*/
#include<stdio.h>
int s[20];
int main(){
    freopen("hamming.in","r",stdin);
    freopen("hamming.out","w",stdout);
    int n,b,d,i,flag,j,x,y,add;
    scanf("%d%d%d",&n,&b,&d);
    s[0]=0;
    for(i=1;i<n;i++){
        s[i]=s[i-1];
        flag=1;
        while(flag){
            s[i]++;
            flag=0;
            for(j=0;j<i;j++){
                add=0;
                x=s[i],y=s[j];
                while(x||y){
                    if(x%2!=y%2) add++;
                    x/=2,y/=2;
                }
                if(add<d) flag=1;
            }
        }
    }
    printf("%d",s[0]);
    for(i=1;i<n;i++){
        if(i%10==0) printf("\n%d",s[i]);
        else printf(" %d",s[i]);
    }
    puts("");
}

沒有留言:

張貼留言