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

高精度整数加法

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

#include <stdio.h>
#include <string.h>
char* add(char* str1, int len1, char* str2, int len2)
{
    int j = len1-1;
    char std[10002] = { 0 };
    for (int i = len2-1; i >= 0; i--)
    {
        int num1 = str2[i] - '0';
        int num2 = str1[j] - '0';
        if (num1 + num2 > 9)
        {
            str1[j] = (num1 + num2) % 10 + '0';
            std[j-1] = (num1 + num2) / 10+'0';
        }
        else
            str1[j] = (num1 + num2) + '0';
        j--;
    }
    int flag = 0;
    char* result = str1;
    int i = 0;
    for (int i = 0; i < len1; i++)
    {
        if (std[i])
        {
            flag = 1;
            break;
        }
    }
    if (flag == 1)
    {
        for (int i = 0; i < len1; i++)
        {
            if (std[i] == 0)
                std[i] = '0';
        }
        result = add(str1, len1, std,len1);
    }
    return result;
}
int main() {
    char str1[10002] = { 0 };
    char str2[10002] = { 0 };
    scanf("%s", str1);
    scanf("%s", str2);
    memmove(&str1[1], str1, 10001);
    str1[0] = '0';
    memmove(&str2[1], str2, 10001);
    str2[0] = '0';
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    char* result = NULL;
    if(len1>len2)
        result = add(str1, len1, str2, len2);
    else
        result = add(str2, len2, str1, len1);
    if(result[0]=='0')
    memmove(result,&result[1],10001);
    printf("%s", result);
    return 0;
}

全部评论

相关推荐

深夜书店vv:腾讯是这样的,去年很多走廊都加桌子当工区
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务