Se dau n
puncte în plan, nu neapărat distincte, fiecare punct fiind dat prin coordonatele sale (x, y)
, unde x
și y
sunt numere naturale. Spunem că două puncte (x, y)
și (i, j)
sunt simetrice dacă x = j
și y = i
.
Cerința
Să se determine numărul perechilor de puncte simetrice.
Date de intrare
Programul citește de la tastatură, separate prin spații, numerele naturale n
, x1
, y1
, x2
, y2
, A
, B
, C
, D
, unde n
este numărul de puncte, (x1, y1)
sunt coordonatele primului punct, (x2, y2)
sunt coordonatele celui de-al doilea punct, iar restul punctelor (x[i], y[i])
se generează după formulele:
x[i] = (x[i - 1] * A + x[i - 2] * B + C) % D
,i = 3..n
y[i] = (y[i - 1] * A + y[i - 2] * B + C) % D
,i = 3..n
Date de ieșire
Programul va afișa pe ecran numărul perechilor de puncte simetrice.
Restricții și precizări
10 ≤ n ≤ 6.000.000
0 ≤ x1, y1, x2, y2 ≤ 30.000
2 ≤ A, B, C, D ≤ 30.000
- Punctele generate nu sunt neapărat distincte. Dacă de exemplu se generează de
5
ori punctul(2,9)
și de7
ori punctul(9,2)
, atunci se obțin5 * 7 = 35
de perechi simetrice. - Simetricul punctului
(x, x)
este un alt punct(x, x)
.
Exemplu:
Intrare
15 2 3 5 2 30 20 50 100
Ieșire
55