Pagini recente » Cod sursa (job #1640398) | Cod sursa (job #3315290) | Cod sursa (job #3315281) | Cod sursa (job #3349061) | Cod sursa (job #3342697)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("curcubeu.in");
ofstream out("curcubeu.out");
int n;
vector <int> a, b, c, father, ans;
int findRoot (int x){
if (father[x] == x)
return x;
return findRoot(father[x]);
}
int main (){
in >> n;
a.resize(n+5);
b.resize(n+5);
c.resize(n+5);
father.resize(n+5);
ans.resize(n+5);
in >> 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+2; ++i)
father[i] = i;
int left, right;
for (int i=n-1; i>=1; --i){
left = min(a[i], b[i]);
right = max(a[i], b[i]);
if (left == 0)
left = 1;
for (int j=findRoot(left); j<=right; j=findRoot(j)){
ans[j] = c[i];
father[j] = j+1;
}
}
for (int i=1; i<n; ++i)
out << ans[i] << '\n';
return 0;
}