1074 宇宙无敌加法器(C语言)

设计思路:
  • 按每一位上不同的进制逐位计算
编译器:C (gcc)
#include <stdio.h>
#include <string.h>

int main()
{
        char s[21] = {0}, a[21] = {0}, b[21] = {0}, sum[21] = {0};
        int ls, la, lb, ns, na, nb, lsum = 21;
        int i;

        scanf("%s %s %s", s, a, b);
        ls = strlen(s);
        la = strlen(a);
        lb = strlen(b);

        for (i = 0; i < ls; i++) {
                na = la <= i ? 0 : a[la - i - 1] - '0';
                nb = lb <= i ? 0 : b[lb - i - 1] - '0';
                ns = s[ls - i - 1] == '0' ? 10 : s[ls - i - 1] - '0';

                sum[lsum - i - 1] += na + nb;
                sum[lsum - i - 2] += sum[lsum - i - 1] / ns;
                sum[lsum - i - 1] = sum[lsum - i - 1] % ns;
        }

        for (i = 0; i < 21; i++)
                sum[i] += '0';

        for (i = 0; i < 21; i++)
                if (sum[i] != 0 && sum[i] != '0') {
                        puts(sum + i);
                        return 0;
                }

        printf("0\n");
        return 0;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值