C語言 高精度乘法
阿新 • • 發佈:2019-01-07
#include <stdio.h> #include <string.h> int main() { char m[555],n[555],temp[555]; int i,j,len_m,len_n; int a[555]={0},b[555]={0},c[1111]={0}; scanf("%s",m); scanf("%s",n); if(strlen(m)<strlen(n)) { strcpy(temp,m); strcpy(m,n); strcpy(n,temp); } len_m =strlen(m); for(i=0;i<=len_m -1;i++) a[i]=m[len_m -1 -i]-'0'; len_n=strlen(n); for(i=0;i<=len_n -1;i++) b[i]=n[len_n -1 -i]-'0'; for(i=0;i<len_n;i++) for(j=0;j<len_m;j++) c[i+j]+=a[j]*b[i]; for(i=0;i<2*len_m;i++) if(c[i]>=10) { c[i+1]+=c[i]/10; c[i]%=10; } i=2*len_m; while(c[i]==0) i--; if(i<0) printf("0"); else { for(;i>=0;i--) printf("%d",c[i]); } return 0; }
—————————————————————————————————
本文原創自
本部落格所有原創文章請以連結形式註明出處。
歡迎關注本技術部落格,本部落格的文章會不定期更新。
大多數人想要改造這個世界,但卻罕有人想改造自己。
世上沒有絕望的處境,只有對處境絕望的人。
————By slience
—————————————————————————————————