aaa,为啥只输出0,大佬救我

P1303 A*B Problem

evil_paramecium @ 2024-01-06 22:47:30

#include<bits/stdc++.h>
using namespace std;

int a[10010],b[10010],c[10010];
int lena,lenb,lenc;
char n[10010],m[10010];

int main(){
    cin>>n>>m;
    lena=strlen(n);
    lenb=strlen(m);
    for(int i=1;i<=lena;i++){
        a[lena-i]=n[i]-'0';
    }
    for(int i=1;i<=lenb;i++){
        b[lenb-i]=m[i]-'0';
    }
    cout<<lena<<lenb
    for(int i=1;i<=lenb;i++){
        int x=0; 
        for(int j=1;j<=lena;j++){
            c[i+j-1]+=a[j]*b[i];
            x=c[i+j-1]/10;
            c[i+j-1]%=10;
        }
        c[i+lena]=x;
    }
    lenc=lena+lenb;
    while((lenc>1) and (c[lenc]==0)){
        lenc--;
    }
    for(int i=lenc;i>=1;i--){
        cout<<c[i];
    }
    cout<<endl;
    return 0;
}

by _C_language_ @ 2024-01-06 23:08:21

用的是高精度吗?


by _C_language_ @ 2024-01-06 23:08:57

瓦是萌新


by Rose_Oierup69 @ 2024-01-06 23:18:21

哥你是不是不会写高精度啊?先去网上学一学高精度怎么写吧


by _zuoqingyuan @ 2024-01-06 23:22:44

#include<bits/stdc++.h>
using namespace std;

int a[10010],b[10010],c[10010];
int lena,lenb,lenc;
char n[10010],m[10010];

int main(){
    cin>>n>>m;\\字符串下标从零开始
    lena=strlen(n);
    lenb=strlen(m);
    for(int i=1;i<=lena;i++){
        a[lena-i+1]=n[i-1]-'0';
    }
    for(int i=1;i<=lenb;i++){
        b[lenb-i+1]=m[i-1]-'0';
    }//这里的转换有问题
    for(int i=1;i<=lenb;i++){
        int x=0; 
        for(int j=1;j<=lena;j++){
            c[i+j-1]+=a[j]*b[i]+x;//进位要加x
            x=c[i+j-1]/10;
            c[i+j-1]%=10;
        }
        c[i+lena]=x;
    }
    lenc=lena+lenb;
    while((lenc>1) and (c[lenc]==0)){
        lenc--;
    }
    for(int i=lenc;i>=1;i--){
        cout<<c[i];
    }
    cout<<endl;
    return 0;
}

by Rose_Oierup69 @ 2024-01-06 23:25:04

大概看了一眼,你的数据处理部分好像没啥问题,但是你连高精度输入的代码都写错了,所以肯定只会输出0了

高精度输入的正确方式:

先把输入的数据用字符串存储起来,然后再用循环一个一个地把字符串里的数据存进数组里 存进数组里的数相对于原数是倒序的

我的AC代码的输入部分:

void input(int a[]){ string s; cin>>s; a[0]=s.length(); for(int i=1;i<=a[0];i++) a[i]=s[a[0]-i]-'0'; return; } (其中c[0]存的是数据的长度,等同于你的lenc)


by _zuoqingyuan @ 2024-01-06 23:32:40

@Rose_Oierup69 您markdown炸了?


by Rose_Oierup69 @ 2024-01-06 23:35:17

@zuoqingyuan 第一次用markdown(捂脸)


|