Pagini recente » Cod sursa (job #2675259) | Cod sursa (job #984897) | Cod sursa (job #508148) | Cod sursa (job #303084) | Cod sursa (job #2612)
Cod sursa(job #2612)
#include <stdio.h>
#define dim 1002
int n,sol[dim],i,k,l;
int main()
{ freopen ("dame.in","r",stdin);
freopen ("dame.out","w",stdout);
scanf("%d",&n);
k=0;
for(i=2;i<=n;i+=2)
sol[++k]=i;
if(n%12==3||n%12==9)
for(i=1;i<k;++i)
sol[i]^=sol[i+1]^=sol[i]^=sol[i+1];
l=k;
for(i=1;i<=n;i+=2)
sol[++k]=i;
if(n%12==8)
for(i=l+1;i<=k;i+=2)
if(i+1<=k)
sol[i]^=sol[i+1]^=sol[i]^=sol[i+1];
if(n%12==2)
{ sol[l+1]^=sol[l+2]^=sol[l+1]^=sol[l+2];
for(i=l+3;i<k;++i)
sol[i]^=sol[i+1]^=sol[i]^=sol[i+1];
}
if(n%12==3||n%12==9)
{ for(i=l+1;i<=k-2;i+=2)
{ if(k%2==0)
{ sol[i]^=sol[i+2]^=sol[i]^=sol[i+2];
sol[i+1]^=sol[i+3]^=sol[i+1]^=sol[i+3];
}
else
if(i==k-2)
{ sol[i+1]^=sol[i+2]^=sol[i+1]^=sol[i+2];
sol[i]^=sol[i+1]^=sol[i]^=sol[i+1];
}
else
{ sol[i]^=sol[i+2]^=sol[i]^=sol[i+2];
sol[i+1]^=sol[i+3]^=sol[i+1]^=sol[i+3];
}
}
}
if(n==2||n==3)
{ printf("%d\n",n-1);
if(n==2)
printf("1 1");
else
printf("1 1\n2 3");
}
else
{ printf("%d\n",n);
for(i=1;i<=n;++i)
printf("%d %d\n",i,sol[i]);
}
fclose(stdin);fclose(stdout);
return 0;
}