大数的乘法

来源:互联网 发布:淘宝买东西怎么写评语 编辑:程序博客网 时间:2024/05/28 05:13
 1 #include<iostream> 2 #include<string.h> 3 #define MAX 100 4 void change(char *st , int len); 5 using namespace std; 6  7  8 int main() 9 {10     char st1[MAX] , st2[MAX];11     int st3[2*MAX] = {0};12     scanf("%s%s" , st1 , st2);13     int len1 , len2 , len3;14     int i , j;15     len1 = strlen(st1);16     len2 = strlen(st2);17     change(st1 , len1);       //将数字翻转18     change(st2 , len2);19     for(i = 0; i < len1; i++)  //大数乘法核心代码20     {21         for(j = 0; j < len2; j++)22         {23             st3[i+j] += (st1[i]-'0')*(st2[j]-'0');24             st3[i+j+1] += st3[i+j] / 10;25             st3[i+j] %= 10;26         }27     }28     len3 = len1+len2+1;29     while(!st3[len3])30     {len3--;}31     for(i = len3; i >= 0; i--)       //输出32         cout<<st3[i];33     cout<<endl;34     return 0;35 }36 37 void change(char *st , int len)38 {39     int i , j;40     char temp;41     for(i =0, j = len-1; i <= j; i++, j--)42     {43         temp = st[i];44         st[i] = st[j];45         st[j] = temp;46     }47 }