Pagini recente » Cod sursa (job #1813241) | Cod sursa (job #49214) | Cod sursa (job #187292) | Cod sursa (job #436605) | Cod sursa (job #3214429)
#include <fstream>
using namespace std;
const int nmax = 1000005;
int sol[nmax];
int nxt[nmax];
int st[nmax], dr[nmax], c[nmax];
int n;
int main(){
ifstream f("curcubeu.in");
ofstream g("curcubeu.out");
f >> n >> st[1] >> dr[1] >> c[1];
for(int i = 2; i <= n - 1; i++){
st[i] = (st[i - 1] * i) % n;
dr[i] = (dr[i - 1] * i) % n;
c[i] = (c[i - 1] * i) % n;
}
for(int i = 1; i <= n - 1; i ++){
nxt[i] = i + 1;
}
nxt[n] = 0;
for(int i = n - 1; i >= 1; i--){
int stanga = min(st[i], dr[i]);
int dreapta = max(st[i], dr[i]);
for(int j = stanga; j <= dreapta && j < n;){
if(sol[j] == 0){
sol[j] = c[j];
nxt[j] = dreapta + 1;
j++;
}
else {
j = nxt[j];
}
}
}
for(int i = 1; i < n; i++){
g << sol[i] << '\n';
}
}