Pagini recente » Cod sursa (job #2121568) | Cod sursa (job #333865) | Cod sursa (job #188741) | Cod sursa (job #1470080) | Cod sursa (job #3141918)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("curcubeu.in");
ofstream cout("curcubeu.out");
const int NMAX = 1e6 + 2;
int n;
vector<int> a(1), b(1), c(1);
vector<int> d, next_b;
int c_b(int box, const int limit, const int C){
if(box >= n)
return n;
if(box > limit)
return (d[box] ? next_b[box] : box);
if(!d[box])
d[box] = C;
next_b[box] = c_b(next_b[box], limit, C);
return next_b[box];
}
int main(){
cin>>n>>a[0]>>b[0]>>c[0];
d.resize(n);
next_b.resize(n+2);
for(int i=0; i<n; i++)
next_b[i] = i+1;
for(int i=1; i<n; i++){
a.push_back(0);
b.push_back(0);
c.push_back(0);
a[i] = (1LL * a[i-1] * i) % n;
b[i] = (1LL * b[i-1] * i) % n;
c[i] = (1LL * c[i-1] * i) % n;
}
for(int i=n-1; i>=0; i--){
c_b(min(a[i], b[i]), max(a[i], b[i]), c[i]);
}
for(int i=1; i<n; i++)
cout<<d[i]<<"\n";
return 0;
}