Sylvester construction 11009

#include <iostream>
using namespace std;

int a[64],b[64];
__int64 poww(int x,int y)
{
        __int64 t=1;
        for(int j=0;j<y;j++)
           t*=x;
           return t;
          
}
int logg(__int64 nu)
{int i;
    for(i=0;i<63;i++)
      if((poww(2,i)<=nu&&poww(2,i+1)>nu))
          break;
          return i;
}


int cc(__int64 d,__int64 e)
{int s,t;
    for(int i=0;i<64;i++)
    {a[i]=0;b[i]=0;}
    while(d>0)
    {
        s=logg(d);
        a[s]=1;
        d-=poww(2,s);
    }
    while(e>0)
    {
        t=logg(e);
        b[t]=1;
        e-=poww(2,t);
    }
    int cnt=0;
    for(int k=0;k<64;k++)
     {
            if(a[k]==b[k]&&a[k]!=0)
                 cnt++;
     }
    
     if(cnt%2==1) return -1;
     if(cnt%2==0) return 1;
}

 

int main()
{
    __int64 m,n,x1,y1,w,l,p,q;
    while(cin>>m)
    {
       for(int i=0;i<m;i++)
       {
               cin>>n>>x1>>y1>>w>>l;
               for(p=y1;p<y1+l;p++)
                 {
                    for(q=x1;q<x1+w-1;q++)
                     {
                        cout<<cc(p,q)<<" ";
                     }
                     cout<<cc(p,q)<<endl;
                 }  cout<<endl;
       }
      
    
      
    }
    return 0;
   
}

posted on 2007-09-14 14:09  xmx  阅读(158)  评论(0)    收藏  举报

导航