哪位大佬给我看看是哪里没写好 最后一组数据没有通过

P1303 A*B Problem

Yale_xin @ 2019-12-02 09:25:47


#include<stdio.h>//80分 
int a[2001]={0},atop,c[4002]={0},ctop,btop;
void mul(int num,int index){//后面的参数用于形成错位 
    int carry=0,carry1=0;//前者是低位产生的进位,后者是向高位产生进位 
    int i,t[2001]={0},t_top=btop-index-1,j;
    for(i=atop-1;i>=0;i--){
        t[t_top] = (a[i]*num+carry)%10;
        carry1 = (a[i]*num+carry)/10;//看是否有进位产生 
        t_top++;
        carry = carry1;
    }
    if(carry)t[t_top++]= carry;
    carry=0;//进位清零 
    for(i=0;i<t_top;i++){
        carry1=(carry+t[i]+c[i])/10;
        c[i]=(carry+t[i]+c[i])%10;
        carry = carry1;
    }
    if(carry)c[t_top++]= carry;
    ctop=t_top;
}
int main(){
    int b[2001],i;
    char ss[2001];
    scanf("%s",ss);
    for(atop=0;ss[atop]!='\0';atop++)a[atop]=ss[atop]-48;
    scanf("%s",ss);
    for(btop=0;ss[btop]!='\0';btop++)b[btop]=ss[btop]-48;
    for(i=btop-1;i>=0;i--)mul(b[i],i);//将乘数的每一位与被乘数相乘 
    while(ctop>1&&c[ctop-1]==0)ctop--;  //去除前导零 
    for(i=ctop-1;i>=0;i--)printf("%d",c[i]);
    return 0;
} 

by Monkey_Hunter @ 2019-12-02 09:51:24

print(int(input())*int(input()))


by i_am_a_joker @ 2019-12-02 10:07:49

+1


by Yale_xin @ 2019-12-02 19:22:33

@自动WA机私信我 你说的是什么意思?能具体一点吗?我是新人 不太懂你的意思(≧∇≦)ノ


by Monkey_Hunter @ 2019-12-10 17:56:39

@yellow_xin 语言选py,复制上去就行


|