1001:
1 #include<stdio.h> 2 #include<string.h> 3 #include<malloc.h> 4 5 void multiple(char *a,char* b,char* m) 6 { 7 int c[150] = {0}; 8 int l1 = strlen(a),l2 = strlen(b),len; 9 for(int i=0;i<l1+l2-1;i++) 10 { 11 for(int j=0;j<=l1+l2-2-i;j++) 12 { 13 if(j < l1 && l1 < 2+i+j) 14 { 15 c[i] += (a[j]-'0')*(b[l1+l2-2-i-j]-'0'); 16 } 17 } 18 } 19 for(int i=0;i<l1+l2+1;i++) 20 { 21 c[i+1]+=c[i]/10; 22 c[i] = c[i]%10; 23 } 24 for(len = l1+l2;len > 0;len--)// len equals to the length of result -1; 25 { 26 if( c[len] != 0) 27 break; 28 } 29 for(int i=0;i<=len;i++) 30 m[i] = c[len-i] + '0'; 31 } 32 33 void power(char *a,int n,char *p) 34 { 35 strcpy(p,a); 36 for(int i=1;i<n;i++) 37 multiple(a,p,p); 38 } 39 40 int trans(char *a) //return the number of digit after dot and clear 0 at tail 41 { 42 int n = 0,l = strlen(a),m=l-1; 43 for(int i=0;i<l;i++) 44 { 45 if(a[i] == '.') 46 { 47 while(a[m] == '0') 48 { 49 a[m] = '