Pagini recente » Cod sursa (job #2106343) | Cod sursa (job #1072104) | Borderou de evaluare (job #366905) | Cod sursa (job #591356) | Cod sursa (job #2006597)
#include <bits/stdc++.h>
using namespace std;
FILE *F=fopen("curcubeu.in", "r"), *G=fopen("curcubeu.out", "w");
int n, a1, a[1000005], b1, b[1000005], c1, c[1000005], v[1000005], nxt[1000005], tx, A, B, C;
int fnd(int x)
{
while(x != nxt[x])
x = nxt[x];
return x;
}
int main()
{
fscanf(F, "%d %d %d %d ", &n, &a[1], &b[1], &c[1]);
for(int i = 1; i <= n; ++ i) nxt[i] = i;
for(int i = 2; i < n; ++ i)
{
a[i] = (1LL*a[i-1] *i)%n;
b[i] = (1LL*b[i-1] * i)%n;
c[i] = (1LL*c[i-1] * i)%n;
}
for(int i = n-1; i > 0; -- i)
{
if(a[i] > b[i]) swap(a[i], b[i]);
A = a[i]; B = b[i]; C=c[i];
while(A <= B)
{
A = fnd(A);
if(A <= B)
{
v[A] = C;
nxt[A] = B+1;
A++;
}
}
}
for(int i = 1; i < n; ++ i)
fprintf(G, "%d\n", v[i]);
return 0;
}