超长正整数相加

超长正整数相加_牛客网

https://www.nowcoder.com/practice/5821836e0ec140c1aa29510fd05f45fc?tpId=37&tqId=21301&tPage=4&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking

#include <stdio.h>
#include <string.h>
int main(){
    char addend[1000];
    while(gets(addend)){
        char augend[1000];
        int n1[300]={0},n2[300]={0},res[300]={0};
        gets(augend);
        int len1=strlen(addend);
        int len2=strlen(augend);
        int i,j,carry=0;
        for(i=0;i<len1;i++){//用各个位的字符与字符‘0’的差值作为计算的操作数
            n1[i]=addend[len1-1-i]-'0';//按逆序输入到数组中,因为是从最低为依次往高位相加
        }
        for(i=0;i<len2;i++){
            n2[i]=augend[len2-1-i]-'0';
        }
        for(i=0;i<len1||i<len2;i++){
            res[i]=(n1[i]+n2[i]+carry)%10;//对应位置相加和10的取余为该位值,如果大于9意味着要向前进一位
            carry=(n1[i]+n2[i]+carry)>9?1:0;
        }
        int len=len1>len2?len1:len2;
        if(res[len]==0)//
            len=len-1;
        for(i=len;i>=0;i--){
            printf("%d",res[i]);
        }
        printf("\n");
    }
    return 0;
}


#python大法好,但就做题来说没什么意义
while True:
    try:
        s1=int(input())
        s2=int(input())
        print(s1+s2)
        
    except:
        break


全部评论
你是不是没考虑最后一位? 比如9999+1=0000
点赞 回复 分享
发布于 2020-02-18 22:02

相关推荐

09-01 21:40
已编辑
同济大学 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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