题解 | #大数乘法#
大数乘法
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];
}
// 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];
}