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 }

 

 

你可能感兴趣的:(HDU)