//
writen by sunboy
// 2007.08.30
// 说明:输入n(0<=n<=1000) 输出n!
#include < iostream >
#include < string >
#include < cstring >
#include < sstream >
using namespace std;
string hp_mul( string & a, string & b); // 返回a*b ,字符串乘法
void change( int a[], string & str) // 将string转换为数组表示方式
... {
int i,len=str.length ();
for(i=len-1;i>=0;i--)
a[len-i-1]=str[i]-'0';
}
string itos( int i) // 将int 转换成string
... {
stringstream s;
s << i;
return s.str();
}
int main()
... {
string f1,f2,f3;
int n,i;
while(cin>>n)
...{
if(n==0)
...{
cout<<0<<endl;
continue;
}
f1="1";
for(i=2;i<=n;i++)
f1=hp_mul(f1,itos(i));
cout<<f1<<endl;
}
return 0;
}
string hp_mul( string & a, string & b) // 返回a*b ,字符串乘法
... {
int i,j,x[5120],y[5120],z[5120];
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
memset(z,0,sizeof(z));
int len1=a.length ();
int len2=b.length ();
change(x,a);
change(y,b);
for(i=0;i<len1;i++)
for(j=0;j<len2;j++)
z[i+j]+=x[i]*y[j];
for(i=0;i<=len1+len2;i++)
if(z[i]>=10)
...{ z[i+1]+=z[i]/10;
z[i]%=10;
}
for(i=len1+len2+2;i>=0;i--)
if(z[i])break;
string res="";
for(j=i;j>=0;j--)
res+=z[j]+'0';
return res;
}
// 2007.08.30
// 说明:输入n(0<=n<=1000) 输出n!
#include < iostream >
#include < string >
#include < cstring >
#include < sstream >
using namespace std;
string hp_mul( string & a, string & b); // 返回a*b ,字符串乘法
void change( int a[], string & str) // 将string转换为数组表示方式
... {
int i,len=str.length ();
for(i=len-1;i>=0;i--)
a[len-i-1]=str[i]-'0';
}
string itos( int i) // 将int 转换成string
... {
stringstream s;
s << i;
return s.str();
}
int main()
... {
string f1,f2,f3;
int n,i;
while(cin>>n)
...{
if(n==0)
...{
cout<<0<<endl;
continue;
}
f1="1";
for(i=2;i<=n;i++)
f1=hp_mul(f1,itos(i));
cout<<f1<<endl;
}
return 0;
}
string hp_mul( string & a, string & b) // 返回a*b ,字符串乘法
... {
int i,j,x[5120],y[5120],z[5120];
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
memset(z,0,sizeof(z));
int len1=a.length ();
int len2=b.length ();
change(x,a);
change(y,b);
for(i=0;i<len1;i++)
for(j=0;j<len2;j++)
z[i+j]+=x[i]*y[j];
for(i=0;i<=len1+len2;i++)
if(z[i]>=10)
...{ z[i+1]+=z[i]/10;
z[i]%=10;
}
for(i=len1+len2+2;i>=0;i--)
if(z[i])break;
string res="";
for(j=i;j>=0;j--)
res+=z[j]+'0';
return res;
}