codevs3117 高精度乘法

来源:互联网 发布:甘肃干部网络考试答案 编辑:程序博客网 时间:2024/06/01 08:57

处理好进位

#include<bits/stdc++.h>using namespace std;template <typename T> void read(T &x){x=0;int f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;for(;isdigit(ch);ch=getchar())x=(x<<1)+(x<<3)+ch-'0';x*=f;}char a1[600],b1[600];int a[600],b[600],c[600];int main(){    cin>>a1>>b1;    int la=strlen(a1),lb=strlen(b1),lc=1,x=0;    for(int i=0;i<la;i++)a[la-i]=a1[i]-'0';    for(int i=0;i<lb;i++)b[lb-i]=b1[i]-'0';for(int i=1;i<=la;i++){x=0; for(int j=1;j<=lb;j++){        c[i+j-1]+=a[i]*b[j]+x;x=c[i+j-1]/10;c[i+j-1]%=10;}c[i+lb]=x;    }lc=la+lb;while(c[lc]==0&&lc>1)lc--;for(int i=lc;i>=1;i--)cout<<c[i];return 0;}


原创粉丝点击