zoukankan      html  css  js  c++  java
  • 【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 }
  • 相关阅读:
    读写分离
    java并发集合知识点(二)
    jdbc框架有很多,包括spring jdbc
    多线程,势必涉及到共享对象读写问题
    &lt;xliff:g&gt;标签
    租赁市场的上海方(浦东/张江)
    HDU 3488Tour(流的最小费用网络流)
    sql使用存储过程和交易
    状态压缩动态规划 -- 骨牌
    Android-2手机应用程序,短信应用
  • 原文地址:https://www.cnblogs.com/TFLSc1908lzs/p/13530813.html
Copyright © 2011-2022 走看看