题解:
Math, Constructive algorithms, Congruent
- when n is odd, A[i] = B[i] = i
- when n is even, there is no solution. So why?
Because: S = Sum_{i=0}^{n-1} i = n/2 (mod n) but 2*S = 0 (mod n)
If , then or just , where S = 0 + 1 + ... + n - 1 = n(n - 1) / 2. So, there must be . But when n is even,
#include<iostream>
#include<cstdio>
using namespace std;
#define manx 100009
int a[manx],b[manx],c[manx];
void p(int n,int *a){
for(int i=0;i<n;i++)
if(i==0) printf("%d",a[i]);
else printf(" %d",a[i]);
printf("\n");
}
int main(){
int n;
while(cin>>n){
if(n%2==0) { printf("-1\n");continue; }
for(int i=0;i<n;i++){
a[i]=b[i]=i;
c[i]=(a[i]+b[i])%n;
}
p(n,a);
p(n,b);
p(n,c);
}
}