http://lfyzit.com/problem/43
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5 int A[20], B[20], C[20], D[20];
6 void zhuanhua(int num, int A[]){
7 int js=0;
8 while(num/10){
9 A[++js]=num%10;
10 num/=10;
11 }
12 while(num/10==0 && num>0){
13 A[++js]=num;
14 num/=10;
15 }
16 A[0]=js;
17 return;
18 }
19 void jiafa(int A[], int C[]){
20 int i=1, jw=0;
21 while(i<=A[0] || i<=C[0]){
22 C[i]=C[i]+A[i]+jw;
23 jw=C[i]/10;
24 C[i]%=10;
25 i++;
26 }
27 C[i]=jw;
28 C[0]=C[i] ? i : i-1;
29 return;
30 }
31 void chengfa(int A[], int B[], int C[]){
32 int i,j;
33 for(i=1; i<=B[0]; i++){
34 int jw;
35 for(j=1, jw=0; j<=A[0]; j++){
36 C[i+j-1]=C[i+j-1]+A[j]*B[i]+jw;
37 jw=C[i+j-1]/10;
38 C[i+j-1]%=10;
39 }
40 C[i+A[0]]=jw;
41 }
42 int len=A[0]+B[0];
43 while(C[len]==0 && len>1) len--;
44 C[0]=len;
45 return;
46 }
47 int main(){
48 int n, cheng, m;
49 cin>>n;
50 m=n+1;
51 zhuanhua(m, A);
52 cheng=n/2;
53 zhuanhua(cheng, B);
54 chengfa(A, B, C);
55 if(n%2){
56 zhuanhua(cheng+1, D);
57 jiafa(D, C);
58 }
59 for(int j=C[0]; j>=1; j--){
60 cout<<C[j];
61 }
62 return 0;
63 }