//#include //#include using namespace std; #include #include #include #include struct bigNum { static const int BASE=100000000,SIZE=8; vectornum; void clear() { while(num[0]==0&&num.size()>1) num.erase(num.begin()); if(num.size()==0) num.push_back(0); } bigNum operator=(string b) { num.clear(); for(int i=0;i1) num.erase(num.begin()); } bool operator==(bigNum b) { bigNum a; a.num=num; a.clear(); b.clear(); if(a.num==b.num) return 1; return 0; } bigNum operator+(bigNum b) { bigNum a; a.num=num; a.clear(); b.clear(); if(a.num.size()=0;ai--,bi--) { a.num[ai]=a.num[ai]+b.num[bi]+j; j=a.num[ai]/BASE; a.num[ai]=a.num[ai]%BASE; } while(ai>=0&&j) { a.num[ai]+=j; j=a.num[ai]/BASE; a.num[ai]=a.num[ai]%BASE; ai--; } if(j) a.num.insert(a.num.begin(),1); a.clear(); return a; } bigNum operator*(int b) { bigNum a; a.num=num; a.clear(); long long add,j=0; for(int i=a.num.size()-1;i>=0;i--) { add=(long long)a.num[i]*b+j; j=add/BASE; add=add%BASE; a.num[i]=add; } if(j) a.num.insert(a.num.begin(),j); a.clear(); return a; } }; ostream& operator<<(ostream &a,bigNum b) { b.clear(); a<>(istream &a,bigNum &b) { char x; string zhuan; while(a.get(x),x>='0'&&x<='9') zhuan+=x; b=zhuan; return a; } int main() { ios::sync_with_stdio(false); bigNum ans; ans="1"; int n; cin>>n; // int runTime=clock(); for(int i=1;i<=n;i++) ans=ans*i; cout<