Pagini recente » Cod sursa (job #2028644) | Cod sursa (job #2555589) | Cod sursa (job #121693) | Cod sursa (job #233401) | Cod sursa (job #1240632)
#include<fstream>
using namespace std;
ifstream in("sortari2.in");
ofstream out("sortari2.out");
const int Nmax = 1001;
const int MOD = 999017;
/*int N,v[Nmax],mark[Nmax];
int V[Nmax];
int stepA(){
int c=0;
for(int i=1;i<=N;i++) V[i]=v[i];
for(int i=1;i<=N;i++){
for(int j=1;j<i;j++) if(V[j]>V[i]) c++;
}
return c;
}
int Pos[Nmax];
int stepB(){
int c=0;
for(int i=1;i<=N;i++) V[i]=v[i];
for(int i=1;i<=N;i++) Pos[ V[i] ]=i;
for(int i=1;i<=N;i++){
if(V[i]!=i){
Pos[ V[i] ] = Pos[i];
swap( V[i] , V[ Pos[i] ] );
c++;
}
}
return c;
}
int num,p,whom[Nmax];
void back(int i){
if(i>N){
//for(int k=1;k<=N;k++) out<<v[k]<<' ';
if(p==0) if(stepA()!=stepB()) num++;// , out<<"here";
if(p==1) if(stepA()!=stepB()) whom[ v[1] ]++;// , out<<"here";
//out<<'\n';
}
else{
for(v[i]=1;v[i]<=N;v[i]++){
if(!mark[v[i]]){
mark[v[i]]=1;
back(i+1);
mark[v[i]]=0;
}
}
}
}
int find(int x){
p=0;
num=0;
N=x;
back(1);
return num;
}
void sh(int x){
p=1;
memset(whom,0,sizeof(whom));
num=0;
N=x;
back(1);
out<< x <<": ";
int S=1;
for(int i=1;i<=N-1;i++) S*=i;
for(int i=1;i<=N;i++) out<< whom[i] <<' ';
out<<'\n';
}
int Ans[Nmax];
int Cp[Nmax];
int PA[Nmax],A[Nmax],R[Nmax],P[Nmax];*/
int main(){
long long N,A=0,P=1,R=0;
in>>N;
for(int i=2;i<=N;i++){
int RR=P-A; while(RR<0) RR+=MOD;
R += RR; while(R>=MOD) R%=MOD;
P=1LL*P*i; while(P>=MOD) P%=MOD;
A=P-(R+RR); while(A<0) A+=MOD;
}
out<< (A % MOD) <<'\n';
return 0;
}
/*int nn=9;
for(int i=1;i<=nn;i++) Ans[i]=find(i);
for(int i=1;i<=nn;i++) Cp[i]=Ans[i]-i*Ans[i-1];
for(int i=1;i<=nn;i++) out<<Ans[i]<<'\n'; out<<'\n';
for(int i=1;i<=nn;i++) out<<Cp[i]<<'\n'; out<<'\n';
for(int i=1;i<=nn;i++) sh(i);
int n;in>>n;
A[1]=0,A[2]=0,A[3]=1,A[4]=11;
PA[1]=0,PA[2]=0,PA[3]=1,PA[4]=7;
P[1]=1,P[2]=2,P[3]=6,P[4]=24,P[5]=P[4]*5,P[6]=P[5]*6;
R[1]=0,R[2]=1,R[3]=2,R[4]=5;
R[5] = P[4]-A[4];
A[5] = P[4]-R[2] + P[4]-R[3] + P[4]-R[4] + P[4]-R[5] + P[4]-R[5];
out<<R[5]<<' '<<A[5]<<'\n';
R[6] = P[5]-A[5];
A[6] = P[5]-R[2] + P[5]-R[3] + P[5]-R[4] + P[5]-R[5] + P[5]-R[6] + P[5]-R[6];
out<<R[6]<<' '<<A[6]<<'\n';*/