大数相乘


#if 1 //大数相乘 #include <string> #include <stdio.h> #include <iostream> using namespace std; void Getdigit(int *a,char *str); void multiply(int *a,int *b,int *c); #define N 10 int i=0; int j=0; int main() { char str1[N]="123456789"; char str2[N]="123456789"; int a[N]; int b[N]; int c[2*N]; Getdigit(a,str1); Getdigit(b,str2); multiply(a,b,c); j = 2*N-1; while(c[j]==0) j--; for(i=j;i>=0;--i) cout<<c[i]; cout<<endl; cout<<endl; system("pause"); return 0; } void Getdigit(int *a,char *str) { int len=strlen(str); char ch; char *p=str; for( i=0;i<N;i++) { a[i]=0; } for( j=0; j<len; j++) { ch=*p++; if(ch<='9' || ch>='0') { a[len-1-j]=ch-'0'; } } } void multiply(int *a,int *b,int *c) { for(i=0;i<2*N;i++) { *(c+i)=0; } for(i=0;i<N;++i) { for(j=0;j<N;++j) { *(c+i+j)+=*(a+i)**(b+j); } } //进位 for(i=0;i<2*N-1;++i) { *(c+i+1)+=*(c+i)/10; *(c+i)=*(c+i)%10; } } #endif

你可能感兴趣的:(大数相乘)