加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数加法和乘法

发布时间:2020-12-14 04:12:04 所属栏目:大数据 来源:网络整理
导读:大数乘法: /******************************* ? *大整数的 乘法 法 ? * 输入两个小于100位的整数值整 数值 * 输出 值:两个整数的 乘积 *******************************/ ? #include stdio.h #include string.h int main() { char a[100],b[100]; int la,l

大数乘法:

  • /*******************************?
  • *大整数的乘法?
  • *输入两个小于100位的整数值整数值
  • *输出值:两个整数的乘积
  • *******************************/?

    #include <stdio.h>
    #include <string.h>
    int main()
    {
    char a[100],b[100];
    int la,lb,n;
    int i,j;
    while(scanf("%s%s",&a,&b) != EOF) {
    int c[200] = {0};
    la = strlen(a);
    lb = strlen(b);
    n = la + lb - 1;//相乘之后的位数,最后可能因为进位再加上一位
    for(i = 0; i < n; i++) {
    ?? ?
    for(j = 0; j <= i && j <= la - 1 ; j++)//需要累加如A0A1A2 * B0B1 = B0*A0 + (B1*A0 + B0* A1) + (B1*A1 + B0*A2) + B1*A2
    {?? ?
    if (i - j > lb - 1) continue;?? ?
    c[i + 1] += (a[j] - '0') * (b[i - j] - '0');
    }
    }
    for (i = n ; i > 0; i--) {? //处理进位?
    ?? ?c[i - 1] += c[i] / 10;
    ?? ?c[i] = c[i] % 10;
    }
    for (i = 0; c[i] == 0 && i <= la + lb - 1 ; i++);//排除第零位可能没有进位的情况
    for(; i <= n; i++)
    {
    ?? ?printf("%d",c[i]);
    }
    printf("n");
    }
    return 0;
    }


    大数加法:


    1. #define?MAX?110?

    2. /*******************************?
    3. *大整数的加法?
    4. *参数:s1,s2为两个以字符串存储的加数?
    5. *返回值:无?
    6. *******************************/??
    7. char?result[MAX];??
    8. void?big_num_add(char?*?s1,char?*?s2)??
    9. {??
    10. ????int?max_len,len1,len2;??
    11. ????int?i,k;??
    12. ????char?*?a;??
    13. ????char?*?b;??
    14. ??
    15. ????len1?=?strlen(s1);??
    16. ????len2?=?strlen(s2);??
    17. ????max_len?=?len1?>?len2?len1?:?len2;??
    18. ??
    19. ????a?=?(char?*)malloc(max_len?+?1);//暂存s1??
    20. ????b?=?(char?*)malloc(max_len?+?1);//暂存s2??
    21. ??
    22. ????memset(a,max_len?+?1);??
    23. ????memset(b,max_len?+?1);??
    24. ??
    25. ????k?=?0;??
    26. ????for(i?=?len1?-?1;i?>=?0;i--)?a[k++]?=?s1[i]?-?'0';//倒置存放??
    27. ??
    28. ????k?=?0;??
    29. ????for(i?=?len2?-?1;i?>=?0;i--)?b[k++]?=?s2[i]?-?'0';//倒置存放??
    30. ??
    31. ????for(i?=?0;i?<?max_len;i++)??
    32. ????{??
    33. ????????a[i]?+=?b[i];??
    34. ????????if(a[i]?>?9)??
    35. ????????{??
    36. ????????????a[i]?=?a[i]?-?10;??
    37. ????????????a[i?+?1]++;??
    38. ????????}??
    39. ????}??
    40. ????if(a[max_len]?!=?0)?max_len++;??
    41. ??
    42. ????k?=?0;??
    43. ????for(i?=?max_len?-?1;i?>=?0;i--)?result[k++]?=?a[i]?+?'0';??
    44. ????result[k]?=?'';??
    45. ????free(a);??
    46. ????free(b);??
    47. }?
  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读