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

高精度整数加法

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

#include <math.h>
#include <stdio.h>
#include <string.h>

int main() {
    char A[10000] = {0};
    char B[10000] = {0};
    int C[10002] = {0};
    scanf("%s\n%s", A, B);

    int lena = strlen(A);
    int lenb = strlen(B);

    int l = (lena > lenb) ? lena : lenb;
    for (int i = 0; i < l; i++) {
        if (lena - i - 1 >= 0 && lenb - i - 1 >= 0) {
            C[i] = A[lena - i - 1] + B[lenb - i - 1] - 2 * '0';
        } else if (lena - i - 1 < 0 && lenb - i - 1 >= 0) {
            C[i] = B[lenb - i - 1] - '0';
        } else if (lena - i - 1 >= 0 && lenb - i - 1 < 0) {
            C[i] = A[lena - i - 1] - '0';
        }
    }/*数字过大时,直接加会运算出错
    long long num=0;
    for (int i = 0; i<=l; i++) {
        printf("%d ",C[i]);
        num += C[i]*pow(10, i);
        printf("%lld ",num);
    }
    printf("%d",num);*/

    for (int i = 0; i <= l; i++) {
        if (C[i] > 9) {
            C[i + 1] += C[i] / 10;
            C[i] = C[i] % 10;
        }
    }


    for (int i = l; i >= 0; i--) {
        if (C[l] != 0) {
            printf("%d", C[i]);
        } else if (A[0] == '0' && B[0] == '0') {
            printf("0");
            break;
        }else if (C[l] == 0 && i != l) {
            printf("%d", C[i]);
        }
    }



    return 0;
}

全部评论

相关推荐

纸鹰:对他说:“你好,我是百度JAVA。”
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务