Pagini recente » Cod sursa (job #1937982) | Cod sursa (job #2496045) | Cod sursa (job #1513863) | Cod sursa (job #2406313) | Cod sursa (job #1728103)
#include<fstream>
#include<iostream>
using namespace std;
ifstream in("curcubeu.in");
ofstream out("curcubeu.out");
const int NMAX = 1000006;
int nxt[NMAX],A[NMAX],B[NMAX],C[NMAX],N,a,b,c,sol[NMAX];
int main()
{
in>>N>>a>>b>>c;
A[1] = a;
B[1] = b;
C[1] = c;
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;
nxt[i] = i;
}
nxt[N] = N;
for(int i = N - 1 ; i >= 1 ; --i){
a = min(A[i],B[i]);
b = max(A[i],B[i]);
c = C[i];
while(a <= b){
if(sol[a]){
a = nxt[a];
continue;
}
sol[a] = c;
nxt[a] = nxt[b+1];
++a;
}
}
for(int i = 1 ; i < N ; ++i)
out<<sol[i]<<"\n";
}