题解 | #大数乘法#

大数乘法

https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571

char* solve(char* s, char* t ) {
    // write code here
    int s_len=strlen(s);
    int t_len=strlen(t);
    int result_len=s_len+t_len;
    char *result=(char*)calloc(result_len+1, sizeof(char));
    memset(result, '0', result_len);
    result[result_len]='\0';
    int s_pos=s_len-1;
    int t_pos=t_len-1;
    int result_pos=result_len-1;
    int carry=0;
    for(int i=0;i<=s_pos;i++)
    {   
        carry=0;
        result_pos=result_len-i-1;
        for(t_pos=t_len-1;t_pos>=0;t_pos--,result_pos--)
        {
            carry=(s[s_pos-i]-'0')*(t[t_pos]-'0')+carry+(result[result_pos]-'0');
            result[result_pos]=carry%10+'0';
            carry=carry/10;
        }
        result[result_pos]+=carry;
    }
    int k;
    for(k=0;result[k]=='0'&&k!=result_len-1;k++);  
    return &result[k];    
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务