hdu 1023

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1023

下面这位仁兄的博客讲的很清楚。。。

http://hi.baidu.com/cykun/item/e2550938ab434308cfb9fe70

我就直接上代码了。。。

View Code
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<string>
 4 #include<vector>
 5 using namespace std;
 6 vector<string>vet;
 7 
 8 string Mul(string &str,int n){
 9     string s="";
10     int len=str.size();
11     int c=0,l=0;
12     for(int i=len-1;i>=0;i--){
13         c=l+(str[i]-'0')*n;
14         l=c/10;
15         s+=c%10+'0';
16     }
17     while(l){
18         s+=l%10+'0';
19         l/=10;
20     }
21     reverse(s.begin(),s.end());
22     return s;
23 }
24 
25 void Facs(){
26     vet.push_back("0");
27     vet.push_back("1");
28     vet.push_back("2");
29     string str="2";
30     for(int i=3;i<=202;i++){
31         str=Mul(str,i);
32         vet.push_back(str);
33     }
34 }
35 
36 string Divide(string &str,int n){
37     string s="";
38     int len=str.size();
39     int c=0,l=0;
40     for(int i=0;i<len;i++){
41         c=l*10+str[i]-'0';
42         l=c%n;
43         c=c/n;
44         if(c==0&&s.size()==0)continue;
45         else s+=c+'0';
46     }
47     return s;
48 }
49 
50 
51 int main(){
52     Facs();
53     int n;
54     while(~scanf("%d",&n)){
55         string str=vet[2*n];
56         int count=2;
57         while(count--){
58             for(int i=2;i<=n;i++){
59                 str=Divide(str,i);
60             }
61             n++;
62         }
63         cout<<str<<endl;
64     }
65     return 0;
66 }

 

 

posted @ 2013-03-25 19:26  ihge2k  阅读(507)  评论(0编辑  收藏  举报