A+B Problems

这是这个脑子里只有Aimee的人的第一篇博客

他还并不强,但是他还是选择了写博客。

因为,黑夜漫漫必有光明。

正文

原题:https://www.luogu.org/problemnew/show/P1601

 

经典模板高精度

以下为代码

/* 
高精度,基础类型,也是必学的模板 
核心思想在于用数组存储每一位,然后模拟竖式计算 
*/ 
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a1[100000],b1[100000],c[100000];
    char a[100000],b[100000];
int main(){

    scanf("%s",&a);
    scanf("%s",&b);
        int a3=strlen(a);
        for(int i=1;i<=a3;++i)
            a1[i]=int(a[a3-i]-'0');//倒序存储,不然会出现奇奇怪怪的逻辑错误 
            int b3=strlen(b);
        for(int i=1;i<=b3;++i)
        b1[i]=int(b[b3-i]-'0');
        int longg=max(a3,b3);
        for(int i = 1;i <= longg;i++){
            c[i]+=a1[i]+b1[i];//这是模拟竖式 
            if(c[i]>=10)
            {
                c[i+1]=c[i+1]+c[i]/10;//处理进位 
                c[i]%=10;
            }
        }
        longg++;//不写的话会有很奇怪的错误,但我也不会知到为什么 
        while(!c[longg]) longg--;//处理前导零 
        if(longg<=0)
        cout<<0;//解决答案为零时的问题,在洛谷,第四个点就需要这行 
        for(int i=longg;i>=1;--i)//倒着存怎么能不倒着输出呢 
        cout<<c[i];
        
        return 0;//关键不忘 
    
} 

 

posted @ 2019-03-03 16:39  Simex  阅读(218)  评论(0编辑  收藏  举报