题解 | #高精度整数加法#

高精度整数加法

https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6

C语言
#include <stdio.h>
#include <string.h>

void reverse(char str[],int length)
{
    int i;
    char s[10001];
    for(i=0;i<length;i++) s[i]=str[length-i-1];
    s[i]='\0';
    for(i=0;i<length;i++) str[i]=s[i];
}

void add_0(char str1[],int length1,char str2[],int length2)
{
    int i;
    if(length1<length2)
    {
        for(i=length1;i<length2;i++) str1[i]='0';
        str1[i]='\0';
    }
    else if(length2<length1)
    {
        for(i=length2;i<length1;i++) str2[i]='0';
        str2[i]='\0';
    }
}

void add(char str1[],char str2[],int length)
{
    int i,jin=0;
    for(i=0;i<length;i++)
    {
        int sum=0;
        sum=str1[i]+str2[i]+jin-2*'0';
        str1[i]=sum%10+'0';
        jin=sum/10;
    }
    if(jin==0) str1[i]='\0';
    else
    {
        str1[i++]=jin+'0';
        str1[i]='\0';
    }
}

int main()
{
    char str1[10001],str2[10001];
    int length1,length2;
    scanf("%s",str1);
    scanf("%s",str2);
    length1=strlen(str1);
    length2=strlen(str2);
    
    reverse(str1, length1);
    reverse(str2,length2);
    
    add_0(str1, length1, str2, length2);
    
    int max=length1;
    if(max<length2) max=length2;
    
    add(str1, str2, max);
    
    int length_new=strlen(str1);
    reverse(str1,length_new);
    puts(str1);
    return 0;
}

大数相加的痛
全部评论

相关推荐

今天 00:11
已编辑
广东工业大学 算法工程师
避雷深圳&nbsp;&nbsp;yidao,试用期&nbsp;6&nbsp;个月。好嘛,试用期还没结束,就直接告诉你尽快找下一家吧,我谢谢您嘞
牛客75408465号:笑死,直属领导和 hr 口径都没统一,各自说了一些离谱的被裁理由,你们能不能认真一点呀,哈哈哈哈哈😅😅😅
点赞 评论 收藏
分享
勇敢的联想人前程似锦:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务