Pagini recente » Cod sursa (job #791817) | Cod sursa (job #2483129) | Cod sursa (job #1617285) | Cod sursa (job #538532) | Cod sursa (job #2608)
Cod sursa(job #2608)
#include <stdio.h>
#define dim 1001
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)
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-1;i+=2)
{ 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);
for(i=1;i<n;++i)
printf("%d %d\n",i,sol[i]);
}
else
{ printf("%d\n",n);
for(i=1;i<=n;++i)
printf("%d %d\n",i,sol[i]);
}
fclose(stdin);fclose(stdout);
return 0;
}