Pagini recente » Cod sursa (job #3289936) | Cod sursa (job #1615968) | Cod sursa (job #1204761) | Cod sursa (job #1302224) | Cod sursa (job #3191341)
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#include <algorithm>
#include <unordered_map>
using namespace std;
using ll=long long;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
const int Nmax=1e6+5;
int c[Nmax];
unordered_map<int,vector<int>> ev;
set<int> s;
int main()
{
ll n,a,b;
fin>>n;
fin>>a>>b>>c[1];
ev[min(a,b)].push_back(1);
ev[max(a,b)+1].push_back(1);
for(ll i=2;i<=n-1;i++)
{
a=(a*i)%n;
b=(b*i)%n;
c[i]=(c[i-1]*i)%n;
ev[min(a,b)].push_back(i);
ev[max(a,b)+1].push_back(i);
}
for(ll i=1;i<n;i++)
{
for(int j=0;j<ev[i].size();j++)
{
auto it=s.find(ev[i][j]);
if(it==s.end()){
s.insert(ev[i][j]);
}
else s.erase(ev[i][j]);
}
if(s.empty()) fout<<0<<'\n';
else fout<<c[*(s.rbegin())]<<'\n';
}
return 0;
}