高精乘法
-----------------------------------------------------------------------
先寫(xiě)個(gè)兩個(gè)數(shù)的乘積 有空改成個(gè)多個(gè)數(shù)的積
-----------------------------------------------------------------------
#include
#include
int i, j, k;
char a1[50], a2[50];
int s1[50], s2[50];
int s[100];
void mul(int *s1, int *s2, int *s) {
for (i=0; ifor (j=0; js[i+j]+=s1[i]*s2[j];
int k=100;
while (!s[k])
--k;
for (i=0,j=0; i<=k; i++) {
s[i+1]+=s[i]/10;
s[i]%=10;
}
}
int main() {
gets(a1);
gets(a2); int m=strlen(a1)+strlen(a2);
for (i=strlen(a1)-1; i>=0; --i)
s1[i]=(a1[strlen(a1)-i-1]-'0');
for (i=strlen(a2)-1; i>=0; --i)
s2[i]=(a2[strlen(a2)-i-1]-'0');
for (i=0; i<100; i++)
s[i]=0;
mul(s1, s2, s);
for (i=m-1; i>=0; --i)//
printf("%d", s[i]); system("pause");
}
-----------------------------------------------------------------------
先寫(xiě)個(gè)兩個(gè)數(shù)的乘積 有空改成個(gè)多個(gè)數(shù)的積
-----------------------------------------------------------------------
#include
#include
int i, j, k;
char a1[50], a2[50];
int s1[50], s2[50];
int s[100];
void mul(int *s1, int *s2, int *s) {
for (i=0; ifor (j=0; js[i+j]+=s1[i]*s2[j];
int k=100;
while (!s[k])
--k;
for (i=0,j=0; i<=k; i++) {
s[i+1]+=s[i]/10;
s[i]%=10;
}
}
int main() {
gets(a1);
gets(a2); int m=strlen(a1)+strlen(a2);
for (i=strlen(a1)-1; i>=0; --i)
s1[i]=(a1[strlen(a1)-i-1]-'0');
for (i=strlen(a2)-1; i>=0; --i)
s2[i]=(a2[strlen(a2)-i-1]-'0');
for (i=0; i<100; i++)
s[i]=0;
mul(s1, s2, s);
for (i=m-1; i>=0; --i)//
printf("%d", s[i]); system("pause");
}