C/C++程式演算法小練習--大整數乘法
阿新 • • 發佈:2019-02-18
大整數乘法的原理很簡單,就是模擬經典的手算步驟
#include <iostream> #include <cstring> using namespace std; void reverse_str(char *a,int size){ for(int i=0;i<size/2;++i){ char t=a[i]; a[i]=a[size-i-1]; a[size-i-1]=t; } } void large_num_mul(){ char a[1000]={0}; char b[1000]={0}; char c[2001]={0}; cin>>a; cin>>b; int a_len=strlen(a); int b_len=strlen(b); reverse_str(a,a_len); reverse_str(b,b_len); for(int i=0;i<b_len;++i){ for(int j=0;j<a_len;++j){ int k=i+j; c[k]+=(a[j]-'0')*(b[i]-'0'); if(c[k]>9){ c[k+1]+=(c[k]/10);//這裡的兩個賦值不能寫顛倒了,要注意c[k]值的先後變化. c[k]=c[k]%10; } } } int j; for(j=a_len+b_len;j>0;--j){ if(c[j]!=0){ break; } } for(int i=j;i>=0;--i){ cout<<(int)c[i]; } cout<<endl; } int main() { large_num_mul(); return 0; }