大整數乘法
阿新 • • 發佈:2018-10-01
space ret algorithm 進行 cout while 當前 ostream cstring
#include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int maxn = 2000; int a[maxn]; int b[maxn]; int c[maxn]; char s[maxn]; char t[maxn]; int x; int main(void) { cin>>s;//輸入乘數str1cin>>t;//輸入乘數str2 int lens = strlen(s); int lent = strlen(t); for(int i = 0; i <= lens-1; i++)//乘數s存入數組a a[lens-i] = s[i]-‘0‘; for(int i = 0; i <= lent-1; i++)//乘數t存入數組b b[lent-i] = t[i]-‘0‘; for(int i = 1; i <= lens; i++) { x=0;//用於存放進位 for(int j = 1; j <= lent; j++)//對乘數每一位進行處理 { c[i+j-1]=a[j]*b[i]+x+c[i+j-1];//當前乘積+上次乘積進位+原數 x=c[i+j-1]/10; c[i+j-1]%=10; } c[i+lent]=x;//進位 } int lenc=lens+lent; while(c[lenc]==0)//刪除前導0 lenc--;for(int i = lenc; i >= 1; i--)//倒序輸出 cout<<c[i]; cout<<endl; return 0; }
大整數乘法