Pagini recente » Cod sursa (job #2100207) | Cod sursa (job #2183800) | Cod sursa (job #3222589) | Cod sursa (job #641132) | Cod sursa (job #2006596)
#include <bits/stdc++.h>
using namespace std;
FILE *F=fopen("curcubeu.in", "r"), *G=fopen("curcubeu.out", "w");
int n, a1, b1, c1, v[1000005], nxt[1000005], tx;
long long 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, &a1, &b1, &c1);
for(int i = 1; i <= n; ++ i) nxt[i] = i;
if(a1 > b1) swap(a1, b1);
for(int i = a1; i <= b1; ++ i)
v[i] = c1, nxt[i] = b1+1;
for(int i = 2; i < n; ++ i)
{
a = (1LL*a1 *i)%n;
b = (1LL*b1 * i)%n;
c = (1LL*c1 * i)%n;
a1 = a, b1 = b, c1 = c;
if(a > b) swap(a, b), swap(a1, b1);
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;
}