Pagini recente » Cod sursa (job #746440) | Cod sursa (job #2100248) | Cod sursa (job #896775) | Cod sursa (job #671752) | Cod sursa (job #1026434)
#include <iostream>
#include <fstream>
#include <sstream>
#include <cstring>
#define nmax 1000005
using namespace std;
bool used[nmax];
int v[nmax], urm[nmax];
int n, A[nmax], B[nmax], C[nmax], L, R, color;
string out = "";
string toString(int x) {
stringstream ss;
ss<<x;
return ss.str();
}
int main() {
ifstream f("curcubeu.in");
ofstream g("curcubeu.out");
f>>n;
f>>A[1]>>B[1]>>C[1];
for(int i=2; i<n; i++) {
A[i] = (A[i-1] * i) % n;
B[i] = (B[i-1] * i) % n;
C[i] = (C[i-1] * i) % n;
}
//for(int i=1; i<n; i++) cout<<min(A[i], B[i])<<" "<<max(A[i], B[i])<<" "<<C[i]<<"\n"; cout<<"\n";
for(int i=1; i<n; i++) urm[i] = i;
for(int t=n-1; t>=1; t--) {
L = min(A[t], B[t]);
R = max(A[t], B[t]);
color = C[t];
for(int i=L; i<=R; ) {
if(used[i]) i = urm[i];
else {
used[i] = true;
v[i] = color;
urm[i] = R+1;
i++;
}
}
//for(int i=1; i<n; i++) cout<<v[i]<<" "; cout<<"\n";
}
for(int i=1; i<n; i++) out = out + toString(v[i]) + "\n";
g<<out;
return 0;
}