for (a = 1; a < n; a++)
for (b = 1; b < n; b++)
for (c = 1; c < n; c++) {
if (gcd(a * b, n) != 1)
continue;
x = 0;
y = b;
bzero(o, sizeof(o));
for (j = 0; j < n; j++) {
x = (a * c + y) % n;
y = (y + b) % n;
o[x]++;
}
for (j = 0; j < n; j++)
assert(o[j] == 1);
}
Количество вариантов:
1 4 6 16 10 36 28 48 36 100 44 phi(n^2) - phi(n) A062955
Если упростить немного и убрать внутренний цикл (c = 1), то:
1 4 4 16 4 36 16 36 16 100 16 phi(n)^2 A127473
Причем добавил нужный комментарий Joerg Arndt (у него есть прекрасная работа по генерации перестановок и инволюций)