초대수 곱셈-----디지털 압축

12147 단어 압축
아이디어:
몇 개의 숫자를 하나의 그룹 저장 단원에 저장할 수 있다.곱셈뿐만 아니라 덧셈도 압위할 수 있다.
이번 코드는 9자리를 중압한다.
 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #define LL __int64
 5 #define N 15000
 6 #define M 50005
 7 #define MOD 1000000000  // 
 8 #define wei 9  //    
 9 using namespace std;
10 
11 LL a[N],b[N],ans[N];
12 char c[M],d[M];
13 /*************      ******************/
14 int StrToNum(char t[],LL tt[]) //      
15 {
16   int len=0,t_len=strlen(t);
17   int i,cnt=1;
18   LL d=1,temp=0;
19   for(i=t_len-1;i>=0;i--)
20   { 
21       temp+=(t[i]-'0')*d;
22       if(cnt==wei)
23       {
24          tt[len++]=temp;
25          temp=0;
26          cnt=d=1;
27       }
28       else
29       {
30             cnt++;
31             d=d*10;
32       }
33   }
34   tt[len++] = temp;
35  //for(i=0; i<len; i++)
36      //   printf("%I64d ", tt[i]);
37  //cout<<endl;
38   return len;
39 }
40 /************************************/
41 /************    *************/
42 void mult(char c[],char d[])
43 {
44     int a_len,b_len,i,j;
45     LL flag,temp;
46    memset(a, 0, sizeof(a));
47    memset(b, 0, sizeof(b));
48    memset(ans, 0, sizeof(ans));
49    a_len= StrToNum(c, a);
50    b_len= StrToNum(d, b);
51   for(i=0;i<a_len;i++)
52   {
53      flag=0;
54     for(j=0;j<b_len;j++)
55     {
56 
57         temp=ans[i+j]+a[i]*b[j]+flag;
58     //    printf("%I64d
", temp);
59 ans[i+j]=temp%MOD; 60 flag=temp/MOD; 61 } 62 while(flag) 63 { 64 temp = ans[i+j]+ flag; 65 ans[i+j]=temp%MOD; 66 flag=temp/MOD; 67 } 68 } 69 /***********************************/ 70 /*********** **************/ 71 a_len=a_len+b_len+2; 72 while(!ans[a_len]&&a_len>0)a_len--; 73 if(a_len>=0) printf("%I64d", ans[a_len--]); 74 while(a_len>=0) printf("%09I64d", ans[a_len--]); 75 printf("
"); 76 /********* ***************/ 77 } 78 /**************************************/ 79 /************ ***************/ 80 int main() 81 { 82 while(scanf("%s%s",c,d)!=EOF) 83 { 84 mult(c,d); 85 } 86 return 0; 87 } 88 /**************************************/

좋은 웹페이지 즐겨찾기