我哪儿错了啊、、、

#include <cstdio>
#include <iostream>
#include<cstring>
using namespace std;
void cvt(char str[],int a[]) {
    int i,n=strlen(str),j=1,k=1;
    for(i=1; i<=n; i++) {
        if(k==10000) {
            k=1;
            j++;
        }
        a[j]+=(str[n-i]-'0')*k;
        k*=10;
    }
    a[0]=j;
}
void add(int a[],int b[],int c[]){
    int i,len=a[0]>b[0]?a[0]:b[0];
    for(i=1;i<=len;i++){
        c[i]+=a[i]+b[i];
        c[i+1]+=c[i]/10000;
        c[i]%=10000;
    }
    len++;
    while(len>1&&c[len]==0)len--;
    c[0]=len;
}
void mult(int a[],int b[],int c[]){
    int i,j,len;
    for(i=1;i<=a[0];i++){
      for(j=1;j<=b[0];j++){
        c[i+j-1]+=(a[i]*b[j]);
        c[i+j]+=c[i+j-1]/10000;
        c[i+j-1]%=10000;
      }
    }
    len=a[0]+b[0]+1;
    while(len>1&&c[len]==0)len--;
    c[0]=len;
}
int cmp(int a[],int b[]){
    int i;
    if(a[0]!=b[0]) return a[0]-b[0];
    for(i=a[0];i>=1;i--){
        if(a[i]!=b[i])return a[i]-b[i];
    }
    return 0;
}
int main() {
    char s[2000];
    int x[100]={0},y[100]={0},z[100]={0},i;
    cin>>s;
    cvt(s,x);
    cin>>s;
    cvt(s,y);
    mult(x,y,z);
    printf("%d",z[z[0]]);
    for(i=z[0]-1;i>=1;i--){
        printf("%04d",z[i]);
    }
    cout<<cmp(x,y);
    return 0;
}

1 条评论

  • 1

信息

ID
1040
难度
7
分类
高精度 点击显示
标签
(无)
递交数
16570
已通过
3173
通过率
19%
被复制
28
上传者