大家帮忙看看,哪里错了???我在c++中测试没有错!!!(高精×高精)

P1303 A*B Problem

B2214shengmin @ 2022-06-25 21:32:53

#include<bits/stdc++.h>
using namespace std;
int int1[1010],int2[1010]; 
char str1[1010],str2[1010];
void init(char a[],int *b){//字符转数组 
    int l=strlen(a);
    for(int i=0;i<l;i++){
        b[i]=a[l-i-1]-'0'; 
    }
}
void mult(char a[],char b[]){//高精*高精 
    init(a,int1);init(b,int2);
    int c[2022],i,j;
    memset(c,0,sizeof(c));
    int len_a=strlen(a),len_b=strlen(b);
    for(i=0;i<len_a;i++){
        for(j=0;j<len_b;j++){
            c[i+j]=c[i+j]+int1[i]*int2[j];
            c[i+j+1]=c[i+1+j]+c[i+j]/10;//进位 
            c[i+j]%=10;//保留当前位置乘积 
        }
    }//i=len_a-1,b=len_b-1
    int k=len_a+len_b-1;
    while(c[k]>=10){
        c[k+1]=c[k]/10;
        c[k]%=10;
        k++;
    }
    while(k>0&&c[k]==0)k--;
    for(int h=k;h>=0;h--)cout<<c[h];
}
int main() {
    while(scanf("%s%s",str1,str2)==2){
        memset(int1,0,sizeof(int1));
        memset(int2,0,sizeof(int2));
        mult(str1,str2);
        cout<<endl;
    }
    return 0;                       
}

by B2214shengmin @ 2022-06-25 22:19:20

@lao_ba 你有点血口喷人


上一页 |