Pagini recente » Cod sursa (job #2924580) | Cod sursa (job #1903658) | Cod sursa (job #183827) | Cod sursa (job #1274862) | Cod sursa (job #369510)
Cod sursa(job #369510)
#include<stdio.h>
#define NMAX 1000005
using namespace std;
#define lg long long
int N;
int a[NMAX], b[NMAX], c[NMAX], next[NMAX], cul[NMAX];
void invers(int i)
{ int aux;
if(a[i] > b[i])
aux = a[i], a[i] = b[i], b[i] = aux;
}
int main()
{ int i, t, j;
freopen("curcubeu.in", "r", stdin);
freopen("curcubeu.out", "w", stdout);
scanf("%d %d %d %d", &N, &a[1], &b[1], &c[1]);
invers(1);
next[1] = 2;
for(i = 2; i <= N; i++)
{
a[i] = ((lg)a[i-1]*i) % N;
b[i] = ((lg)b[i-1]*i) % N;
c[i] = ((lg)c[i-1]*i) % N;
invers(i);
next[i] = i+1;
}
//next[N] = 0;
for(i = N-1; i >= 1; i--)
for(t = a[i]; t <= b[i]; j = t, t = next[t], next[j] = b[i]+1)
{
if(cul[t] == 0)
cul[t] = c[i];
//next[j] = b[i]+1;
}
for(i = 1; i <= N-1; i++)
printf("%d\n", cul[i]);
return 0;
}