• 2981:大整数加法-poj


    2981:大整数加法

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    求两个不超过200位的非负整数的和。

    输入
    有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
    输出
    一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
    样例输入
    22222222222222222222
    33333333333333333333
    样例输出
    55555555555555555555
    来源
    程序设计实习2007
    思路:数据用字符串输入,将字符串转换为整型,转换的时候逆序,以便于后面进位,求和,去0输出!注意考虑到0+0的情况!
    代码:
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include <stdlib.h>
    using namespace std;
    #define MAXLEN 2001
    int a1[MAXLEN+10];
    int a2[MAXLEN+10];
    char str1[MAXLEN+10];
    char str2[MAXLEN+10];
    int main()
    {
        int i,j;
        memset(a1,0,sizeof(a1));//分配内存并初始化整型数组
        memset(a2,0,sizeof(a2));
        int Len1,Len2;//定义字符数组的长度
        scanf("%s%s",&str1,&str2);
        Len1=strlen(str1);
        Len2=strlen(str2);
        j=0;
        for(i=Len1-1;i>=0;i--)//将字符串1转换为整型
        {
            a1[j]=str1[i]-'0';
            j++;
        }
        j=0;
        for(i=Len2-1;i>=0;i--)//将字符串2转换为整型
        {
            a2[j]=str2[i]-'0';
            j++;
        }
        if(Len1<Len2)//获取字符串最大长度
        {
            i=Len1;
            Len1=Len2;
            Len2=i;
        }
        for(i=0;i<Len1;i++)//计算和的值
        {
            a1[i]+=a2[i];
            if(a1[i]>=10)
            {
                a1[i]=a1[i]-10;
                a1[i+1]=a1[i+1]+1;
            }
        }
          for(i=Len1;a1[i]==0&&i>=0;i--);//去掉多余的0,输出和
          if(i>=0)
          {
          for(;i>=0;i--)
          printf("%d",a1[i]);
          }
          else
        printf("0");//0+0的情况
        
        return 0;
    }
    以大多数人努力程度之低,根本轮不到去拼天赋~
  • 相关阅读:
    043 抖音短视频爬取实战
    048 Python里面yield的实现原理
    047 Python面试知识点小结
    001 Glang实现简单分布式缓存
    046 算法的时间复杂度和空间复杂度计算
    042 使用Python远程监视多个服务器和数据库的状态,python,监控,同步
    041基于python实现jenkins自动发布代码平台
    045 chrome浏览器前端调试技巧
    STL学习
    Asio与Boost.Asio
  • 原文地址:https://www.cnblogs.com/gcter/p/7374302.html
Copyright © 2020-2023  润新知