//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;}