• 【TFLSnoi李志帅】第四篇文章---高精度加法


    满分代码,制作不易,不喜勿喷

    1168:大整数加法


    时间限制: 1000 ms         内存限制: 65536 KB
    提交数: 34543     通过数: 10605

    【题目描述】

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

    【输入】

    有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。

    【输出】

    一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。

    【输入样例】

    22222222222222222222
    33333333333333333333

    【输出样例】

    55555555555555555555


     代码:



    ——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 char sa[1005],sb[1005];//由于long long的数据范围是2^63-1,也就是19位数,本题数据规模超出范围,所以要用到数组;
     4 int la,lb,lc,a[1005],b[1005],c[1005]={0},jw=0,sum=0;
     5 int main()
     6 {
     7     gets(sa);
     8     gets(sb);
     9     la=strlen(sa);
    10     lb=strlen(sb);
    11     lc=la>lb ? la : lb;//lc=la>lb?la:lb可以写作if(la>lb)lc=la;else lc=lb;
    12     for( int i=0;i<la;i++)
    13     {
    14         a[la-1-i]=sa[i]-'0';//注意a数组是char类型,sa数组是int类型,两者转换需要-‘0’
    15     }
    16     for(int i=0;i<lb;i++)
    17     {
    18         b[lb-1-i]=sb[i]-'0';
    19     }
    20     for(int i=0;i<=lc;i++)
    21     {
    22         c[i]=(a[i]+b[i]+jw)%10;//jw专门负责储存进位
    23         jw=(a[i]+b[i]+jw)/10;
    24     }
    25     if(jw!=0) lc++,c[lc]=jw;//处理最高位进位问题
    26     for(int i=lc-1;i>=0;i--)
    27     {
    28         if(c[i]!=0)break;
    29         else sum++;//负责处理前置零问题
    30     }
    31     for(int i=lc-1-sum;i>=0;i--)
    32     {
    33         cout<<c[i];
    34     }
    35     return 0;
    36 }
  • 相关阅读:
    DirectX标准规定 DirectX和OpenGL的不同
    Android 抽屉效果的导航菜单实现
    Servlet基础(三) Servlet的多线程同步问题
    Java微服务之Spring Boot on Docker
    Spring Cloud 微服务架构学习笔记与示例
    从你的全世界路过—一群程序员的稻城亚丁游记
    从一个国内普通开发者的视角谈谈Sitecore
    吴军《硅谷来信》思维导图笔记
    .NET Core微服务之基于Jenkins+Docker实现持续部署(Part 1)
    2018OKR年中回顾
  • 原文地址:https://www.cnblogs.com/TFLSc1908lzs/p/13530813.html
Copyright © 2020-2023  润新知