我好菜啊

P1303 A*B Problem

microchip @ 2020-07-13 10:57:13

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

string s1,s2;
int num1[5000],num2[5000],len1,len2,ans[8000];

int main()
{
    cin>>s1>>s2;
    len1=s1.size();len2=s2.size();
    for(int i=1;i<=len1;i++){
        num1[i]=s1[i]-'0';
    }
    for(int i=1;i<=len2;i++){
        num2[i]=s2[i]-'0';
    }
    int X=1,x;
    for(int i=len1;i>=0;i--){
        x=X;
        for(int j=len2;j>=0;j--){
            ans[x]+=num1[i]*num2[j];
            ans[x+1]+=ans[x]/10;
            ans[x]%=10;
            x++;
        }
        X++;
    }
    for(int x=7999;ans[x]==0&&x!=0;x--);
    for(x;x>=0;x--){
        cout<<ans[x];
    }
    return 0;
}

我感觉自己没有错,但是结果令我很奇怪 不管我哪里错了,答案数组里也不应该有负数 输入12和12,数组结果:0 0 1 -2 -2 4 0


by 出言不逊王子 @ 2020-07-13 10:58:50

众所周知string的第一位是0


by microchip @ 2020-07-13 11:01:27

@出言不逊王子 wtf......


by 出言不逊王子 @ 2020-07-13 11:02:21

@microchip 说错了,string的下标计算方法和char数组是一样的,s1[len1]是非法位置


by microchip @ 2020-07-13 11:04:02

@出言不逊王子 好吧,知道了


by microchip @ 2020-07-13 11:05:31

还有改了以后为什么前面总是多输出3个0,我不已经把前导零删了吗


by 出言不逊王子 @ 2020-07-13 11:07:08

for(int x=7999;ans[x]==0&&x!=0;x--)把int删掉


by microchip @ 2020-07-13 11:08:05

@出言不逊王子 唔,谢谢,A了


by 出言不逊王子 @ 2020-07-13 11:08:25

qwq


by houpingze @ 2020-07-13 11:14:04

btd?


|