zoukankan      html  css  js  c++  java
  • 大数相加(类似杭电oj平台上acm1002)

    /*输入两个非常大的整数(完全超出了intlong的表示范围),这个整数的长度可能超过100位,计算并输出这两个数相加的结果。*/

    //自己用题目所给的案例测试,输出是正确的,也能输出正确的结果,不知道为什么提交以后一直wa,(如果有人测试了我代码以后知道我wa的原因请评论中提出哦,十分感谢),但是算法思想应该是对的,也参考了其他人的博客,(http://blog.csdn.net/hackbuteer1/article/details/6667026的大数相加的题目

    我的代码如下:

    //大数相加
    #include<stdio.h>
    #include<string.h>
    #define N 1010
    char a[N], b[N], c[N];
    int sum[N];
    int main()
    {
    int len1, len2, m, k, temp, len;
    int i, j;
    int test;
    while (scanf("%d", &test) != EOF)
    {
    for (int index = 0; index < test; index++)
    {
    scanf("%s%s", a, b);
    len1 = strlen(a);len2 = strlen(b);
    if (len1 < len2)//确保字符串a不短于字符串b
    {
    strcpy(c, a);strcpy(a, b);strcpy(b, c);
    m = len1;len1 = len2;len2 = m;
    }
    k = m = 0;temp = 0;len = 0;
    for (i = len1 - 1, j = len2 - 1; i >= 0; i--, j--)//从低位开始相加,模拟手工运算,逐位相加
    {
    if (j < 0)
    {
    temp = a[i] - '0' + m;
    }
    else
    {
    temp = a[i] - '0' + b[j] - '0' + m;
    }
    sum[k++] = temp % 10;
    m = temp / 10;//进位
    }
    len = k;//len用来记录sum的长度
    if (m > 0)//如果加完还有进位m,则加在sum的高位
    {
    len++;
    sum[len - 1] = m;
    }
    int cnt=index+1;
    printf("Case %d: ", cnt);
    printf("%s + %s = ", a, b);
    //从低位开始输出
    for (i = len - 1; i >= 0; i--)
    {
    printf("%d", sum[i]);
    }
    if (index<test)
    printf(" ");
    else
    printf(" ");
    /*if (m>0)
    {
    //printf("%d", m);
    sum[k] = m;
    printf("Case %d: ", ++index);
    printf("%s + %s = ", a, b);
    for (i = k ; i >= 0; i--)
    {
    printf("%d", sum[i]);
    }
    }
    else
    {
    printf("Case %d: ", ++index);
    printf("%s + %s = ", a, b);
    for (i = k-1; i >= 0; i--)
    {
    printf("%d", sum[i]);
    }
    }
    printf(" ");
    */
    }
    }
    return 0;

    }

     

    一生有所追!
  • 相关阅读:
    C++ 内置函数 判断字母、数字及大小写转换
    C++11 随机数 random
    rpc
    C++11 智能指针
    xargs 命令使用
    记录优秀的文章
    腾讯 测试开发
    struts2文件上传、下载、防止重复提交
    注解
    @RestController注解
  • 原文地址:https://www.cnblogs.com/BlueBlue-Sky/p/8468590.html
Copyright © 2011-2022 走看看